猿问

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

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


<?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";

  }

}

?>


倚天杖
浏览 112回答 3
3回答

精慕HU

foreach() -foreach将$key在每次迭代时将当前元素的键另外分配给变量foreach (array_expression as $key => $value)&nbsp; &nbsp; statement注意: 您可以使用任何变量,而不必将变量与名称一起使用$key您正在使用该键作为条件,$flavor["in_stock"]并使用相同的键$flavor["name"]。您需要使用$value哪个保持当前迭代array,正确使用的foreach代码是foreach($flavors as $flavor => $value) {&nbsp; if($value["in_stock"] == true) {&nbsp; &nbsp; echo $value["name"] . "\n";&nbsp;}}

慕码人8056858

为什么要迭代呢?可以只过滤一个条件数组:<?php$flavors = [];$flavors[] = ['name' => 'CD', 'in_stock' => true];$flavors[] = ['name' => 'V',&nbsp; 'in_stock' => true];$flavors[] = ['name' => 'S',&nbsp; 'in_stock' => false];$inStock = array_filter($flavors, function (array $flavor) {&nbsp; &nbsp; return $flavor['in_stock'];});print_r($inStock);$inStockFlavors = array_column($inStock, 'name');print_r($inStockFlavors);
随时随地看视频慕课网APP
我要回答