I have a database call and I’m trying to figure out what the $key => $value
does in a foreach
loop.
The reason I ask is because both these codes output the same thing, so I’m trying to understand why it’s written this way. Here’s the code:
1)In foreach use $key => $value
foreach($featured as $key => $value){ echo $value['name']; }
this outputs the same as:
2)In foreach use only $value
foreach($featured as $value) { echo $value['name']; }
So my question is, what is the difference between $key => $value
or just $value
in the foreach
loop. The array is multidimensional if that makes a difference, I just want to know why to pass $key
to $value
in the foreach
loop.
Advertisement
Answer
Well, the $key => $value
in the foreach loop refers to the key-value pairs in associative arrays, where the key serves as the index to determine the value instead of a number like 0,1,2,… In PHP, associative arrays look like this:
$featured = array('key1' => 'value1', 'key2' => 'value2', etc.);
In the PHP code: $featured
is the associative array being looped through, and as $key => $value
means that each time the loop runs and selects a key-value pair from the array, it stores the key in the local $key
variable to use inside the loop block and the value in the local $value
variable. So for our example array above, the foreach loop would reach the first key-value pair, and if you specified as $key => $value
, it would store 'key1'
in the $key
variable and 'value1'
in the $value
variable.
Since you don’t use the $key
variable inside your loop block, adding it or removing it doesn’t change the output of the loop, but it’s best to include the key-value pair to show that it’s an associative array.
Also note that the as $key => $value
designation is arbitrary. You could replace that with as $foo => $bar
and it would work fine as long as you changed the variable references inside the loop block to the new variables, $foo
and $bar
. But making them $key
and $value
helps to keep track of what they mean.