foreach中用 的坑

2021-08-16 04:59:14 字數 2455 閱讀 7297

<?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++)

$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)

var_export($a);//array ( 0 => 2, 1 => 4, 2 => 6, )


foreach($a as $k => $v)

var_export($a);//array ( 0 => 2, 1 => 4, 2 => 16, )                       

?>

mybatis 中foreach中的坑

我踩過一次坑,記錄一下,也發篇部落格來幫助同樣遇到這個問題的人 進入正題 有乙個需求是想通過傳入乙個字串陣列,然後通過goods coding欄位匹配出不在此陣列內的所有商品。所以我使用foreach迴圈,如下 test codings null and codings.length 0 and g...

PHP之foreach引用填坑

看到一篇文章描 就是它 述了php的乙個語法特點,用文本來描述就是如果對乙個陣列進行foreach引用遍歷過後在對這個陣列使用同樣的變數進行一次普通foreach遍歷會導致這個陣列的值發生變化。我這個描述可能還是不太清楚,直接上 可以看到在迴圈當中沒有任何 所以兩次列印出來的資料肯定應該是一模一樣的...

php中用foreach改變陣列的值的問題

翻到php文件的foreach那頁這樣寫道 foreach 語法結構提供了遍歷陣列的簡單方式。foreach 僅能夠應用於陣列和物件,如果嘗試應用於其他資料型別的變數,或者未 初始化的變數將發出錯誤資訊。有兩種語法 foreach array expression as value statemen...