0

私は次のような配列を持っています...

$arr = array(
   array(
      "server_name"    => "server_a",
      "server_number"  => "1",
      "server_status"  => "OPEN" 
   ),
   array(
      "server_name"   => "server_b",
      "server_number" => "2",
      "server_status" => "CLOSED" 
   )
);

「server_status」のインデックス値を次のように設定しようとしています

foreach($arr as $a){
   $a['server_status'] = "STATUS_".$a['server_status'];
}

何も起こっていないように見えるため、これは配列値を設定する正しい方法ではないようです。このタスクを実行する正しい方法は何でしょうか。

4

2 に答える 2

1

次のように、参照によってforeachする必要があります。

foreach($arr as &$a){
   $a['server_status'] = "STATUS_".$a['server_status'];
}

それ以外の場合は、現在のイテレーションのアイテム(コピー)は変更されません。

于 2012-09-18T12:03:12.143 に答える
1

参照により反復する必要があります。

foreach($arr as &$a) {
   $a['server_status'] = ...;
}

(コードとの唯一の違いは&、foreachの前の$ aです。)

繰り返した後、参照の設定を解除することを忘れないでください。

unset($a);

それ以外の場合、コードの後半でこの変数に書き込むと、配列の最後の要素がオーバーライドされます。

foreachドキュメントを参照してください。

于 2012-09-18T12:03:45.420 に答える