微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

foreach 循环内的条件检查

如何解决foreach 循环内的条件检查

我想从 json 数组中过滤数据 where $data['stock'] != 0。我可以将条件检查放在 foreach 循环中吗?或者,有没有更好的方法来执行相同的操作?

foreach($json['items'] as $data)
{
  if(!$data['stock'] == 0) {
    echo 'Success';
  }
} 

解决方法

有很多方法可以实现您想要实现的目标。你的代码没有错。您也可以尝试使用 array_filter()

$json = [
    "items" => [[
        "name" => "Widget","stock" => 3
    ],[
        "name" => "Foo","stock" => 0
    ],[
        "name" => "Bar","stock" => 2
    ]]
];

$filtered_array = array_filter($json['items'],function($data){
 return $data['stock'];
 //Will get rid fo the Foo item because its stock is 0
});

var_dump($filtered_array);
// Will NOT contain the Foo item

预期输出:

array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(6) "Widget"
    ["stock"]=>
    int(3)
  }
  [2]=>
  array(2) {
    ["name"]=>
    string(3) "Bar"
    ["stock"]=>
    int(2)
  }
}

这将过滤您的数组以仅包含值在 $data['stock'] 中的那些项目。您不需要编写 != 0,因为在 PHP 中,在这个特定的比较上下文中,0 被翻译为布尔值 false。

Quick demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。