Php 从foreach中删除整个阵列
我正在尝试筛选和删除与特定值匹配的数组。我从一个API获取JSON,然后通过PHP usng JSON_decode对其进行解码。它显示得非常好,但它给出了我不想要的值 JSON文件= 我正在使用下面的foreach语句,它可以工作并显示我需要的每个stat的数据(为了集中精力删除数组,我将其剥离):Php 从foreach中删除整个阵列,php,json,foreach,Php,Json,Foreach,我正在尝试筛选和删除与特定值匹配的数组。我从一个API获取JSON,然后通过PHP usng JSON_decode对其进行解码。它显示得非常好,但它给出了我不想要的值 JSON文件= 我正在使用下面的foreach语句,它可以工作并显示我需要的每个stat的数据(为了集中精力删除数组,我将其剥离): 这是我希望它与当前的外观相比的外观- 我的数组过滤器代码有什么问题?我希望它删除任何明确声明: “competitionName”:“Junior SS Premiership Zone 3”
这是我希望它与当前的外观相比的外观-
我的数组过滤器代码有什么问题?我希望它删除任何明确声明:
“competitionName”:“Junior SS Premiership Zone 3”
,因此该数组中的任何数据都不会在foreach中处理
谢谢
$item['competitionName']
是一个字符串,而不是字符串数组。我想你想要的是:
$data = array_filter($json['response']['data'], function ($item) {
return $item['competitionName'] != 'Junior SS Premiership Zone 3';
});
foreach ($data as $item) {
// display the data
}
或者不用担心过滤器,只需在主循环中检查并跳过它
foreach ($json['response']['data'] as $item) {
if ($item['competitionName'] == 'Junior SS Premiership Zone 3') {
continue;
}
// process the item
}
$item['competitionName']
不是一个数组,而是一个字符串。也许这就是我感到困惑的地方。如果一个字符串等于'Junior SS Premiership Zone 3',我想移除整个数组。这非常有效!非常感谢!我知道我错在哪里了。这是一个相当简单的修复。如果我想取消第二个竞赛名称,例如高级竞赛示例XX
?如果($item['competitionName']=='Junior SS Premiership Zone 3'| |;$item['competitionName']=='Senior Competition Example XX')
,或者你可以像第一个一样使用一系列if
语句。或者,您可以将要排除的所有名称放在一个数组中,并使用in_array()
对不起,如果我也想按日期对它们进行排序,该怎么办?它说2019年、2020年等等。我是否会运行另一个函数,使其从顶部的2020年排序到底部的2018年排序?是的,uSort
就是你想要的。你应该在循环之前做。
foreach ($json['response']['data'] as $item) {
if ($item['competitionName'] == 'Junior SS Premiership Zone 3') {
continue;
}
// process the item
}