foreach里面的foreach只返回最后的结果?

时间:2013-12-20 15:44:33

标签: php arrays foreach

我对PHP比较陌生,阵列让我很适合!我正在尝试学习如何修改数组并从修改中创建新数组,但我的尝试只返回foreach循环中的最后一个数组键。

function stuff() {
  $items = array('shirt', 'shoes', 'pants');
  $colors = array('red', 'blue', 'green');
  $list = array();
  foreach($items as $item) {
    foreach($colors as $color) {
      $list[$item] = array($color => 'available');
    }
  }
  return $list;
}

我希望它返回的是:

Array
(
  [shirt] => Array
  (
    [red] => available
    [blue] => available
    [green] => available
  )

  [shoes] => Array
  (
    [red] => available
    [blue] => available
    [green] => available
  )

  [pants] => Array
  (
    [red] => available
    [blue] => available
    [green] => available
  )
)

但是,它似乎只返回第二个数组中的最后一项...

Array
(
  [shirt] => Array
  (
    [green] => available
  )

  [shoes] => Array
  (
    [green] => available
  )

  [pants] => Array
  (
    [green] => available
  )
)

3 个答案:

答案 0 :(得分:10)

$list[$item] = array($color => 'available');更改为$list[$item][$color] = 'available';,您的问题就会得到解决。

答案 1 :(得分:3)

替换

 $list[$item] = array($color => 'available');

 $list[$item][$color] = 'available';

答案 2 :(得分:0)

这是完整的代码。基本上,每次循环颜色时都会定义一个新数组,取代之前的颜色。

function stuff() 
{
  $items = array('shirt', 'shoes', 'pants');
  $colors = array('red', 'blue', 'green');
  $list = array();
  foreach($items as $item) 
  {
      foreach($colors as $color) 
      {
         $list[$item][$color] = 'available';
      }
  }
 return $list;
}

print_r(stuff());