PHP foreach for multidimentional array的孩子?

时间:2016-10-24 07:21:58

标签: php arrays foreach

我有一个多维数组:

$food= array
  (
  array("Rye"   =>1, "Wheat" =>4, "White" =>4 ),
  array("Apple" =>2, "Orange"=>1, "Banana"=>5 ), <---data I want
  array("Cheese"=>2, "Milk"  =>1, "Cream" =>5 )
);

有没有办法可以使用foreach循环遍历第二个子数组(水果数据)?

6 个答案:

答案 0 :(得分:3)

喜欢这个吗?

foreach($food as $produce) {
    foreach($produce as $name => $value) {
        echo "The produce $name has value: $value\n";
    }

}

第一个for循环只是循环遍历第一个数组,它没有我们需要的重要键,所以我只获得对值的引用并将其存储在值$produce

然后,我们循环遍历$produce的数组,但这次键和值都很重要。

这就是我们在这个循环中使用$name => $value的原因,因此我们得到了我们需要的两个值。
有些人更喜欢总是使用$key => $value,但我更愿意为变量提供他们所代表的值的名称。

现在,如果你需要一个特定的水果,你可以将它包装在一个函数中来搜索它

/**
 * Returns the fruit name from supplied food array.
 * @var $food array[array[string => value]]
 * @var $fruitName string The name of the fruit you want
 * @returns 
 **/
function findFruit($food,$fruitName) {
     foreach($food as $produce) {
        foreach($produce as $name => $value) {
            if($name == $fruitName) {
               return $value;
            }
        }
    }
} 
$quantityOfBananas = findFruit($food, "Banana");//5

答案 1 :(得分:0)

您必须使用嵌套的foreach,

foreach($food as $item){
    foreach($item as $key => $value){
        echo $key; //Rye
        echo $value; // 1
    }
}

答案 2 :(得分:0)

要循环子数组,您使用了两个循环

<?php

    $food= array
      (
      array("Rye"=>1,"Wheat"=>4,"White"=>4),
      array("Apple"=>2,"Orange"=>1,"Banana"=>5), 
      array("Cheese"=>2,"Milk"=>1,"Cream"=>5)
    );

    foreach($food  as $data){
         foreach($data as $key=>$value){
           echo "key=".$key." value=".$value.'<br>';
    }
}

输出

key=Rye value=1
key=Wheat value=4
key=White value=4
key=Apple value=2
key=Orange value=1
key=Banana value=5
key=Cheese value=2
key=Milk value=1
key=Cream value=5

答案 3 :(得分:0)

试试这个:

$food= array
(
  array("Rye"=>1,"Wheat"=>4,"White"=>4),
  array("Apple"=>2,"Orange"=>1,"Banana"=>5),    
  array("Cheese"=>2,"Milk"=>1,"Cream"=>5)
);

foreach($food as $key => $fruits){
  if($key == 1){
   foreach($fruits as $ke => $fruit){
    echo $ke."-".$fruit."<br>";
  }
}
}

PS:您的小麦语法错误"Wheat"->4

答案 4 :(得分:0)

你可以在foreach(嵌套的foreach)中使用foreach,如下所示

foreach($food as $f)
  {
    foreach ($f as $fn => $sn)
    {
        echo $fn.$sn;

    }
  }

答案 5 :(得分:0)

既然你知道它总是第二个孩子,我会保持简单并做这样的事情:

$fruits = $food[1];
foreach($fruits as $key => $value) {
    // do something
}

不需要两个foreach循环。