2017-03-15 69 views
0

什麼是完全在PHP & $值$和值之間的foreach循環的區別? 它是如何工作的? 在下面的示例中,print_r($ arr)將返回在第一個循環中修改的數組,而在第二個循環中未修改。PHP adressing變量差異

<?php 

$arr = array(1, 2, 3, 4); 

foreach ($arr as $key => &$value) { 
    $value = $value * 2; 
    echo "$key => $value; "; 
    print_r ($arr); 
    echo '<br>'; 
} 

unset ($value); 
unset ($key); 

echo '<br>Second loop without "&" on value <br>'; 

foreach ($arr as $key => $value) { 

    $value = $value * 2; 
    echo "$key => $value; " ; 
    print_r($arr); 
    echo '<br>'; 
} 

?> 

我現在是一個初學者的問題,因爲我是一個:)

+1

請閱讀[通過引用傳遞(http://php.net/manual/en/language.references.pass.php) – peterm

+1

另外,https://stackoverflow.com/questions/10057671/how-do-php-foreach-actually-work – AbraCadaver

回答

1

按引用而不是按值傳遞的價值。通過引用傳遞的變量(使用參考運算符'&')可以在函數內部更改它們的值。
例如,參見the examples here

+0

謝謝先生。 因此,如果我沒有正確理解,如果我不通過引用傳遞它,我可以用foreach循環內的數組「玩」,但其值之外的數據將保持不變。 所以一旦循環完成,數組將保持不變,只要我不使用引用傳遞。 – Radu

+0

如果通過引用傳遞,請確保取消設置(因爲它在代碼中),否則它仍將在循環外引用。 http://php.net/manual/en/control-structures.foreach.php – FD3