<?php
$a = 'abc';
$b = $a;
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//abc
echo $b;//ccc
?>
<?php
$a = $b = 'abc';
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//abc
echo $b;//ccc
?>
<?php
$a = 'abc';
$b = &$a;
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//ccc
echo $b;//ccc
?>
<?php
$a = 'aaaa';
$a1 = 'aaaa1111';
$b = &$a;
$b = 'bbbb';
echo $a; // bbbb
$b = &$c;
$b = 'aaaa';
echo $a;//bbbb
?>
<?php
//对于数组中的一个元素,作为引用赋值的情况
$arr = ['a','b','c'];
$v = &$arr[2];
$v = '111';
print_r($arr);//['a','b','111']
$arr2 = ['a', 'b', 'c'];
$v =&$arr2[2];
$v = ['222'];
print_r($arr);//['a','b','111']
?>
`
<?php
//foreach中&$v的使用情况
$arr = [1,2,3];
foreach($arr as $k => $v) {}
print_r($arr);//[1,2,3]
$v = 4;
print_r($arr);//[1,2,3]
$arr = [1,2,3];
foreach($arr as $k => &$v) {}
print_r($arr);//[1,2,3]
$v = 4;
print_r($arr);//[1,2,4]
?>
<?php
//两个foreach连续用&$v的情况
$arr = [1,2,3];
foreach($arr as $k => &$v) {}
print_r($arr);//[1,2,3]
$arr2 = [11,12,13];
foreach($arr2 as $k => &$v){}
print_r($arr);//[1,2,3]
?>
#测试题
<?php
for($i = 1; $i<=2; $i++) {
$arr = [1,2,3];
foreach($arr as $k => $v) {
}
$a[] = $arr;
$arr = [11,12,13];
foreach($arr as $k =>&$v) {
}
$b[] = $arr;
}
print_r($a); //[ [1,2,3], [1,2,3] ]
#测试题
<?php
$a = [1,2,3];
foreach($a as $k => &$v) {
$v = $v + $v;
}
var_export($a);//array ( 0 => 2, 1 => 4, 2 => 6, )
foreach($a as $k => $v) {
$v = $v + $v;
}
var_export($a);//array ( 0 => 2, 1 => 4, 2 => 16, )
?>
$a = 'abc';
$b = $a;
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//abc
echo $b;//ccc
?>
<?php
$a = $b = 'abc';
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//abc
echo $b;//ccc
?>
<?php
$a = 'abc';
$b = &$a;
echo $a;//abc
echo $b;//abc
$b = 'ccc';
echo $a;//ccc
echo $b;//ccc
?>
<?php
$a = 'aaaa';
$a1 = 'aaaa1111';
$b = &$a;
$b = 'bbbb';
echo $a; // bbbb
$b = &$c;
$b = 'aaaa';
echo $a;//bbbb
?>
<?php
//对于数组中的一个元素,作为引用赋值的情况
$arr = ['a','b','c'];
$v = &$arr[2];
$v = '111';
print_r($arr);//['a','b','111']
$arr2 = ['a', 'b', 'c'];
$v =&$arr2[2];
$v = ['222'];
print_r($arr);//['a','b','111']
?>
`
<?php
//foreach中&$v的使用情况
$arr = [1,2,3];
foreach($arr as $k => $v) {}
print_r($arr);//[1,2,3]
$v = 4;
print_r($arr);//[1,2,3]
$arr = [1,2,3];
foreach($arr as $k => &$v) {}
print_r($arr);//[1,2,3]
$v = 4;
print_r($arr);//[1,2,4]
?>
<?php
//两个foreach连续用&$v的情况
$arr = [1,2,3];
foreach($arr as $k => &$v) {}
print_r($arr);//[1,2,3]
$arr2 = [11,12,13];
foreach($arr2 as $k => &$v){}
print_r($arr);//[1,2,3]
?>
#测试题
<?php
for($i = 1; $i<=2; $i++) {
$arr = [1,2,3];
foreach($arr as $k => $v) {
}
$a[] = $arr;
$arr = [11,12,13];
foreach($arr as $k =>&$v) {
}
$b[] = $arr;
}
print_r($a); //[ [1,2,3], [1,2,3] ]
print_r($b); //[ [11,12,3], [11,12,13] ]
?>
#第一次for循环
#$arr设置为[1,2,3], $v变量被先后赋值为1,2,3, $arr不变---所以$a[0] = [1,2,3]
#$v变量先后指向$arr[0], $arr[1], $arr[2],$v是一个引用,最后是引用了 $arr[3]的值, 但是$arr不变。--- 所以$b[0] = [11,12,13]
#第二次for循环
#$arr被重置为[1,2,3],【但是$v已经是一个存在的引用了,指向$b[0][2]】,$v变量被先后赋值为1,2,3, $arr不变---所以$a[1] = [1,2,3],但是此时$b[0][2]变为了3
#$v变量先后指向$arr[0], $arr[1], $arr[2],$v是一个引用,最后是引用了 $arr[3]的值, 但是$arr不变。--- 所以$b[1] = [11,12,13]
#测试题
<?php
$a = [1,2,3];
foreach($a as $k => &$v) {
$v = $v + $v;
}
var_export($a);//array ( 0 => 2, 1 => 4, 2 => 6, )
foreach($a as $k => $v) {
$v = $v + $v;
}
var_export($a);//array ( 0 => 2, 1 => 4, 2 => 16, )
?>