2017-03-03 12 views
1

Iveは配列をパラメータとし、すべての値を4に変更する関数を作成しましたが、機能しません。本当に私を悩ます、助けを使うことができましたありがとう!PHP関数配列の値が変更されない

$cup3 = array (1,4,3,5,7,2); 
roll($cup3); 
print_r($cup3); 

function roll($array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
    return $array; 
} 

出力:(1,4,3,5,7,2)の代わりに、すべての4Sの

答えて

3

直接的$cup3を編集するために参照&$array渡し:

roll($cup3); 
print_r($cup3); 

function roll(&$array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
} 

または使用関数から戻る:

$cup3 = roll($cup3); 
print_r($cup3); 

function roll($array) 
{ 
    foreach($array as &$value) 
    { 
     $value = 4; 
    } 
    return $array; 
} 
+0

ありがとう、本当にありがとう! –

+0

ここで重要なのは、参照渡しされるオブジェクトとは異なり、配列が値渡しされるということです。関数の本体の配列の変更を関数以外にも残したい場合は、@AbraCadaverの最初の例のように、参照によって明示的に渡す必要があります。 – ashnazg

+0

私が覚えておくべき重要な教訓。基本を覚えておいてください。 –

関連する問題