Difference between "as $key => $value" and "as $value" in PHP foreach

arrays, foreach, php

Solution

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.

Problem

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.

Original source