在foreach循环中执行数组时出错:

时间:2019-04-26 23:48:01

标签: php

请帮助我纠正此代码中的错误 这是我要查找库存冰淇淋名称的代码

<?php
$flavors = array();
$flavors[]=array("name" => "CD" , "in_stock" => true);
$flavors[]=array("name" => "V"  , "in_stock" => true);
$flavors[]=array("name" => "S"  , "in_stock" => false);

foreach($flavors as $flavor => $value) {
if($flavor["in_stock"] == true) {
    echo $flavor["name"] . "\n";
  }
}
?>

4 个答案:

答案 0 :(得分:0)

使用

<?php
$flavors = array(
array("name" => "CD" , "in_stock" => true),
array("name" => "V"  , "in_stock" => true),
array("name" => "S"  , "in_stock" => false));

foreach($flavors as $flavor){
    if ($flavor['in_stock'] == true) {
        echo $flavor['name']."\n";
    }
}
?>

代替

foreach($flavors as $flavor => value){

您正在使用多维数组,以使用aproach(=>值):

foreach ($flavors as $flavor => $value) {
if ($value['in_stock'] == true) {
    echo $value['name']."\n";
 }
}

PHP Arrays

答案 1 :(得分:0)

您拥有平坦的非关联数组,这意味着您无需使用$key => $value进行迭代,而只需使用$item

因此,您的解决方法就是这么简单:

https://ideone.com/j7RMAH

...
// foreach ($flavors as $flavor => $value) {
foreach ($flavors as $flavor) {
...

答案 2 :(得分:0)

  

foreach() -foreach还将在每次迭代中将当前元素的键分配给$key变量

foreach (array_expression as $key => $value)
    statement

注意: 您可以使用任何变量,而不必使用名称为$key

的变量

您正在为条件$flavor["in_stock"]使用密钥,而为$flavor["name"]使用密钥。您需要使用$value来保存当前的迭代array,对于您的代码,正确使用foreach

foreach($flavors as $flavor => $value) {
  if($value["in_stock"] == true) {
    echo $value["name"] . "\n";
 }
}

答案 3 :(得分:0)

为什么要迭代?可以只过滤一个条件数组:

<?php

$flavors = [];
$flavors[] = ['name' => 'CD', 'in_stock' => true];
$flavors[] = ['name' => 'V',  'in_stock' => true];
$flavors[] = ['name' => 'S',  'in_stock' => false];

$inStock = array_filter($flavors, function (array $flavor) {
    return $flavor['in_stock'];
});

print_r($inStock);

$inStockFlavors = array_column($inStock, 'name');

print_r($inStockFlavors);