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

skyaspnet 2010-08-14 05:41:47


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

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

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



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

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

...全文
78 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值,属于同一个类且被定义在相同的命名空间中,则两个对象相等。

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

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧