多维数组子级的PHP foreach?

多维数组子级的PHP foreach?,php,arrays,foreach,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 ) ); $food=array ( 数组(“黑麦”=>1,“小

我有一个多维数组:

$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 )
);
$food=array
(
数组(“黑麦”=>1,“小麦”=>4,“白色”=>4),
数组(“苹果”=>2,“橙色”=>1,“香蕉”=>5),2,“牛奶”=>1,“奶油”=>5)
);
有没有一种方法可以使用foreach循环遍历第二个子数组(水果数据)?

像这样

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

}
第一个for循环只是在第一个数组中循环,它没有我们需要的有效键,所以我只获取对值的引用并将其存储在value
$product

然后,我们循环遍历数组,
$product
,但此时键和值都很重要

这就是为什么我们在这个循环中使用
$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

您必须使用嵌套的foreach

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

要循环已有的子数组,请使用两个循环

<?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>';
    }
}
试试这个:

$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>";
  }
}
}
$food=array
(
数组(“黑麦”=>1,“小麦”=>4,“白色”=>4),
数组(“苹果”=>2,“橙色”=>1,“香蕉”=>5),
数组(“奶酪”=>2,“牛奶”=>1,“奶油”=>5)
);
foreach($key=>$fruits的食物){
如果($key==1){
foreach($ke=>$fruit的水果){
回声$ke.“-”$fruit.“
”; } } }

PS:您的小麦出现语法错误
“小麦”->4

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

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

    }
  }

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

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

不需要两个
foreach
循环

可能重复的我不认为这是重复的,因为OP只想循环第二个子数组。@MeltingDog它总是第二个子数组吗?@MeltingDog看到我的答案了吗
$fruits = $food[1];
foreach($fruits as $key => $value) {
    // do something
}