有Offers
的JSON数据
foreach($json['offers'] as $offer)
每个报价都有包含国家/地区的数据
"countries":[{"name":"United States","code":"US"}]
如果所有优惠不包括"US"
,我该如何删除?
据我了解,我应该使用array_map
对吗?但是,如何告诉它删除那些不包含值的对象,而不是那些包含我定义的值的对象?
答案 0 :(得分:1)
您需要使用array_filter()
$json['offers'] = array_filter($json['offers'], function($item){
return $item['countries'][0]['code'] == "US";
});
在demo中查看结果
答案 1 :(得分:0)
如果我没有误解您的问题,那么简单的array_filter()
就能为您解决问题。
<?php
$json = '[{"countries":[{"name":"United States","code":"US"}]},{"countries":[{"name":"United Kingdom","code":"UK"}]},{"countries":[{"name":"Canada","code":"CA"}]}]';
$decode = json_decode($json,1);
$new = array_filter($decode, function ($var) {
return ($var['countries'][0]['code'] != 'US');
});
print_r($new);
?>
答案 2 :(得分:0)
谢谢你们的回答,但是我已经用另一种方式了。
$salys2 = array("US");
$salys = array_map('trim', $salys2);
if (!in_array($offer['countries'][0]['code'], $salys)) {
// skipping
continue;
}
有人可以解释一下为什么我们在国家和代码之间保留[0]
吗?