<?php
$arr = array(1,2,3,4,5,6);
foreach ($arr as &$val){
$val = 'x';
$new[] = $val;
}
print_r($new); //赋值
echo "<br>/n";
print_r($arr); //引用
?>
<?php
class A{
static public $WHAT='aa';
private $a;
function __construct(){
$this->hello();
}
function seta($val){
$this->a = $val;
}
function geta(){
return $this->a;
}
function hello(){
echo "hello world";
}
}
$a = new A();
$a->seta("hello8");
echo $a->geta(); //output:hello8
echo "<br />";
$b = $a;
$b->seta("ttttaaa");
echo $b->geta(); //output:ttttaaa
echo "<br />";
$c = clone $a;
echo $c->geta();
//output:ttttaaa 为什么不是hello8呢,原因是$b与$a是对象的引用,因此当$b中的seta方法给$a改变值时$a 所new出来的对象的值也变化了所以当$c复制$a对象时就变成了这种情况了
本文通过两个PHP示例深入探讨了数组元素引用及对象引用的行为差异。首先展示了如何使用foreach循环修改数组元素,并解释了赋值与引用的区别。其次,通过一个类实例演示了对象属性在不同引用情况下的变化,揭示了PHP中对象赋值实际上是引用传递的特点。
1003

被折叠的 条评论
为什么被折叠?



