我有一个多维数组:
$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循环遍历第二个子数组(水果数据)?
答案 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
循环。