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($arr as &$a) {
   $a['server_status'] = ...;
}

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

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

unset($a);

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

请参阅foreach文档。

于 2012-09-18T12:03:45.420 回答
1

您需要通过引用进行 foreach,如下所示:

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

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

于 2012-09-18T12:03:12.143 回答