请教一个类实例化的疑难问题

skyaspnet 2010-08-14 05:41:47


class test
{
public $val='test';
}

$test1=new test();
$test2=bew test();

if($test1==$test2)
{
echo '两者相等';
}



很奇怪这样的结果,在C#等编程语言中,这两者应该是不一样的,因为是各自实例化对象,

在PHP中为什么会是相等的呢?请教各位大侠,谢谢!

...全文
49 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
skyaspnet 2010-08-14
[Quote=引用 6 楼 heyli 的回复:]
&表示值引用

PHP code

function test(&$args)
{
$args += 1;
}
$args = 4;
test($args);
echo $args ;





PHP code

function test($args)
{
$args += 1;
}
$args = 4;
tes……
[/Quote]

非常感谢,我再试试,先结帖
  • 打赏
  • 举报
回复
heyli 2010-08-14
&表示值引用

function test(&$args)
{
$args += 1;
}
$args = 4;
test($args);
echo $args ;




function test($args)
{
$args += 1;
}
$args = 4;
test($args);
echo $args ;




  • 打赏
  • 举报
回复
skyaspnet 2010-08-14
感觉我把问题都搞混了,刚试了一下,好像已经不建议使用'&'来进行参数传递,

是不是值类型和引用类型在PHP5以后都可以自动识别了?
  • 打赏
  • 举报
回复
skyaspnet 2010-08-14
还是说它根据类型来进行判断,如果是值类型那么就按值类型,如果是引用类型就按引用类型,

php5以后已经不再区分加'&'与不加'&'了
  • 打赏
  • 举报
回复
skyaspnet 2010-08-14
[Quote=引用 2 楼 heyli 的回复:]
当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。

另一方面,当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。
[/Quote]

非常感谢,试了,确实是这样,但是问题又来了,如果是在函数中传递参数呢?


function test(test $aa)
{
echo $aa->aaa;
}


$aa参数传递的时候是按引用还是按值传递呢?加与不加'&'有区别吗?
  • 打赏
  • 举报
回复
heyli 2010-08-14
当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。

另一方面,当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。
  • 打赏
  • 举报
回复
相关推荐
发帖
基础编程

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
帖子事件
创建了帖子
2010-08-14 05:41
社区公告
暂无公告