2016-09-03 5 views
1

PHP配列の処理方法が分からなくてはなりません。私は次のコードを実行すると:多次元連想配列の値を変更するPHP

<?php 
$ary = array(
    "alpha" => array("A"=>1,"B"=>2,"C"=>3), 
    "beta" => array("A"=>7,"B"=>8,"C"=>9) 
); 

foreach ($ary as $key => $vals) { 
    $vals["B"]=99; 
    echo $key."= ".$vals["A"]." ".$vals["B"]." ".$vals["C"]."<br>"; 
} 
echo $ary['alpha']["B"]."<br>"; 
?> 

を私が取得:

alpha= 1 99 3 
beta= 7 99 9 
2 

それぞれの場合の99への変更は失われているようです。私は間違って何をしていますか?

+1

「foreach($ ary as $ key =>&$ vals)」 –

+0

ありがとうございます!私はforeachがデフォルトで値渡しであったことに気付かなかった。今、多くの意味があります。 – tko

答えて

0
<?php 
$ary = array(
    "alpha" => array("A"=>1,"B"=>2,"C"=>3), 
    "beta" => array("A"=>7,"B"=>8,"C"=>9) 
); 

foreach ($ary as $key => $vals) { 
    //$vals["B"]= 99; 
    $ary[$key]["B"] = 99; 
    echo $key."= ".$vals["A"]." ".$vals["B"]." ".$vals["C"]."<br>"; 
} 
echo $ary['alpha']["B"]."<br>"; 
?> 
1

foreach文で配列の項目を変更する場合は、参照渡しする必要があります。

foreach ($ary as $key => &$vals) { 
}