0

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?

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.