foreach参数无效

Invalid foreach argument

本文关键字:无效 参数 foreach      更新时间:2023-09-26

我有两个名为sample.json和sample2.json的json文件。它们提取的数据略有不同,但格式应该相似。当我在sample1.json上运行脚本时,它就起作用了。当我在sample.json上运行脚本时,它在第141行和第169行中的foreach参数无效。

141行的代码在这里:

 foreach($posts as &$entry){
            $mod = new modifier($entry); //create modifier object
            $result = $mod->getResult(); //gives parsed text back
            $entry['mod-post'] = $result;
            $usr = $entry['user']['screen_name'];   //mod the usr as well while we are at it to give a new usr      
            $usr = '@' . $usr;
            $entry['mod-usr'] = $usr;               
    }

当我读取其中的数据时,它会以的形式出现

$datafile = 'data/sample.json';
//open up datafile created through search
$myfile = fopen($datafile, 'r') or die('Unable to open file!!!');
$d = fread($myfile, filesize($datafile));
//file already formatted as json
$data = array();
$data = json_decode($d, true);
$posts = $data["statuses"]; //make easier to access later
fclose($myfile);//close file

根据我所看到的,我认为问题是第二个json文件没有被正确读取。也就是说,当我将我的文件上传到jsonint或任何json检查器时,它会为我的两个文件提供一个无效的json(或者我不知道为什么。我正在从twitter中提取数据,所以应该没问题)。

如果您有时间快速查看,我已经链接了json文件。

https://www.dropbox.com/s/3zqwqtbav7ii9if/sample1.json?dl=0

https://www.dropbox.com/s/7xh94csike6ucqc/sample.json?dl=0

即使你能给我一个提示,告诉我可能是什么问题,以及为什么我的程序可以在sample1.json上运行,而不能在sample.json上运行,这也会很有帮助。

所以我发现问题是sample1.json实际上是有效的,sample.json实际上是无效的。问题是json.parser.online.fr/返回了不正确的响应,将它们标记为"无效"不确定为什么那个特定的检查器不起作用(我使用它是因为你可以直接将文件上传到他们的网站)。