多维数组子级的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
}