Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从foreach中删除整个阵列_Php_Json_Foreach - Fatal编程技术网

Php 从foreach中删除整个阵列

Php 从foreach中删除整个阵列,php,json,foreach,Php,Json,Foreach,我正在尝试筛选和删除与特定值匹配的数组。我从一个API获取JSON,然后通过PHP usng JSON_decode对其进行解码。它显示得非常好,但它给出了我不想要的值 JSON文件= 我正在使用下面的foreach语句,它可以工作并显示我需要的每个stat的数据(为了集中精力删除数组,我将其剥离): 这是我希望它与当前的外观相比的外观- 我的数组过滤器代码有什么问题?我希望它删除任何明确声明: “competitionName”:“Junior SS Premiership Zone 3”

我正在尝试筛选和删除与特定值匹配的数组。我从一个API获取JSON,然后通过PHP usng JSON_decode对其进行解码。它显示得非常好,但它给出了我不想要的值

JSON文件=

我正在使用下面的foreach语句,它可以工作并显示我需要的每个stat的数据(为了集中精力删除数组,我将其剥离):


这是我希望它与当前的外观相比的外观-

我的数组过滤器代码有什么问题?我希望它删除任何明确声明:
“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
}