首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP安装/语法/函数 » [求助]PHP问题  


  作者:191795023
  注册时间:2007-04-03
  主题/回复:2/0
  积分:417
  等级:★★☆(五级)
  称号:略有小成

  191795023@163.co..
  未提供
  www.

 

 发表:2007-04-15 04:35:32 阅读 2316 次 回复 2 次 得分2  |   字号 字色
[求助]PHP问题
<?php
class foo {
  var $x;
  function setX($x) {
    $this->x = $x;
  } 
  function getX() {
    return $this->x;
  }
}
$o1 = new foo;
$o1->setX(4);
$o2 = $o1;
$o1->setX(5);
if($o1->getX() == $o2->getX())
print($o1->getX());
print($o2->getX()); 
 
?>
这段代码中
$o1和$o2是不是相连的?o1的值改变o2的也变?
如果是的话,$o2 = $o1;是因为这个句子相连的么?
 
 1#楼  
 
  回复人:xxfx007
  注册时间:2004-11-24
  主题/回复:10/33
  积分:476
  等级:★★☆(五级)
  称号:略有小成

   
 1#楼 发表于2007-04-16 19:09:05  评分:1 

$o2 = $o1 这个就是个赋值语句  因为o1是foo的一个实例化对象  o1的getX方法得到的值为4   之后又执行$o2 = $o1  就是copy了一个o1  名字叫o2的对象  这个时候o2的getX方法得到的值也为4 ,现在o1和o2没有关系了    都是2个对象   之后又把o1的getX方法得到的值变为5  所以得到的结果 一个是4  一个是5 
 2#楼  
 
  回复人:yzhxiang
  注册时间:2006-09-02
  主题/回复:4/14
  积分:492
  等级:★★☆(五级)
  称号:略有小成

   
 2#楼 发表于2007-04-24 20:59:52  评分:1 

上面的程序执行的结果应该为4
完全同意上面仁兄的解答,但我的结果是4。
程序中的:
if($o1->getX() == $o2->getX())
print($o1->getX());
print($o2->getX()); 

用了if判断显然o1和o2不相等。其就不执行 “ print($o1->getX());”。
而执行“print($o2->getX());”,其o2结果为4。
o1的结果为5,但程序不执行。

  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.004sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版