设置多维数组值

时间:2012-09-18 12:01:16

标签: php

我有一个看起来像......

的数组
$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'];
}

这似乎不是设置数组值的正确方法,因为似乎没有发生任何事情,执行此任务的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您需要通过引用来预告,例如:

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

否则它不会修改当前迭代的项目 - 它是一个副本。

答案 1 :(得分:1)

您需要通过引用进行迭代:

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

(与您的代码的唯一区别是foreach中$ a之前的&。)

迭代后不要忘记取消设置引用:

unset($a);

否则,稍后在代码中写入此变量将覆盖数组的最后一个元素。

请参阅foreach文档。