2017-03-15 11 views
0

PHPの違いは何ですか?& $ foreachループの$ Valueと$ value? それはどのように機能しますか? 以下の例では、print_r($ arr)は最初のループで変更された配列を返し、2番目のループでは変更しません。

<?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-does-php-foreach-actually-work – AbraCadaver

答えて

1

参照により代わりの値による値を渡します。参照渡しされる変数(参照演算子 '&'を使用)は、関数内で値を変更することができます。
たとえば、[参照渡し] the examples here

+0

ありがとうございます。 したがって、私が参照渡ししないと正しく理解すれば、foreachループ内の配列で "再生"できますが、その値の外側は変更されません。 ループが終了すると、参照渡しを使用しない限り、配列は以前と同じになります。 – Radu

+0

参照渡しの場合は、コードのままにしてください。そうでない場合は、ループ外で参照されます。 http://php.net/manual/en/control-structures.foreach.php – FD3

関連する問題