PHPピット之:foreach&
1500 ワード
コードは次のとおりです.
出力結果:
質問:foreachは2回も何もしていませんが、そのうちの1つが&を使っていて、結果的に配列の内容が変更されました.なぜですか.
印刷詳細を出力:
出力:
原因及び修正:
$a = array('a','b','c','d');
foreach ($a as &$item){};
print_r($a);
foreach ($a as $item){};
print_r($a);
出力結果:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)
Array
(
[0] => a
[1] => b
[2] => c
[3] => c
)
質問:foreachは2回も何もしていませんが、そのうちの1つが&を使っていて、結果的に配列の内容が変更されました.なぜですか.
印刷詳細を出力:
$a = array('a','b','c','d');
foreach ($a as &$item){};
print_r($a);
foreach ($a as $key => $item) {
echo "{$key} => {$item} ";
print_r($a);
}
出力:
Array( [0] => a [1] => b [2] => c [3] => d)
0 => a Array( [0] => a [1] => b [2] => c [3] => a)
1 => b Array( [0] => a [1] => b [2] => c [3] => b)
2 => c Array( [0] => a [1] => b [2] => c [3] => c)
3 => c Array( [0] => a [1] => b [2] => c [3] => c)
原因及び修正:
$a = array('a','b','c','d');
foreach ($a as &$item){};// $item $a[3], 'd'
print_r($a);
//php
//unset($item);
//foreach 0 3, $key, value $item, $item $a[3]
foreach ($a as $key => $item) {// $item ( $a[3] ) :a,b,c; n n-1
echo "{$key} => {$item} ";
print_r($a);
}