为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
倚天杖 2021-05-04 20:52:53
有人请帮助我纠正此代码中的错误。这是我尝试查找库存冰淇淋名称的代码。<?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";  }}?>
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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

 }

}


查看完整回答
反对 回复 2021-05-21
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

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


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


查看完整回答
反对 回复 2021-05-21
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信