简体   繁体   中英

Setting a multi-dimensional array value

I have an array that looks like...

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

I am trying to set the index value of "server_status" in the following way

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

This does not seem to be the correct way to set an array value as nothing seems to be happening, what would be the correct way to perform this task?

You need to foreach by reference, like this:

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

Otherwise it does not modify the item of the current iteration - its a copy.

You need to iterate by reference:

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

(The only difference from your code is the & before $a in foreach.)

Just don't forget to unset the reference after iterating:

unset($a);

Else, writing to this variable later in the code would override the last element of the array.

See foreach documentation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM