警告:()提供的foreach无效参数
问题描述:
$text_file = implode(array_map(function ($v) {
return file_get_contents($v);
}, glob(__DIR__ . "/files/*")));
$jsonStuff = json_decode($text_file, true);
foreach($jsonStuff['items'] as $val) {
$comment = $val['snippet']['topLevelComment']['snippet']['textDisplay'];
}
这个脚本工作,如果“文件”文件夹中只包含一个文本文件相当不错,但如果有有多个文件崩溃:警告:()提供的foreach无效参数
Warning: Invalid argument supplied for foreach()
有谁知道如何改变“foreach”行以获得它的工作?
答
您可以将foreach
更改为类似:
$i = 0;
foreach($jsonStuff['items'] as $key => $val) {
foreach($val as $item){
$comments[$i] = $item['snippet']['topLevelComment']['snippet']['textDisplay'];
}
$i++;
}
打印出你的JSON对象,看看它有什么不同。 – Marvin
foreach在数组上工作。如果你不给它一个数组,那么你会得到这样的错误。 $ jsonStuff ['items']总是一个数组吗? – georaldc
“文件”文件夹中的所有文件都采用相同的格式,所以这不成问题。这个脚本单独读取文件没有任何问题,但是当我尝试它们立即读取它崩溃。 – Nero43