2017-02-13 15 views
0
$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']; 

} 

Этот скрипт работает вполне прилично, если «файлы» папка содержит только один текстовый файл, но если есть несколько файлов там происходит сбой:Предупреждение: неверный аргумент поставляются для Еогеасп()

Warning: Invalid argument supplied for foreach() 

ли кто-нибудь знаете, как изменить строку «foreach», чтобы заставить ее работать?

+0

Распечатайте объект JSON и посмотреть, как он отличается. – Marvin

+0

foreach работает над массивами. Если вы не дадите ему массив, вы получите такие ошибки. Является ли $ jsonStuff ['items'] всегда массивом? – georaldc

+0

Все файлы в папке «файлы» все в одном формате, поэтому это не проблема. Этот скрипт читает файлы отдельно без каких-либо проблем, но когда я пытаюсь их прочитать сразу, он сбой. – Nero43

ответ

0

Вы можете изменить foreach на что-то вроде:

$i = 0; 
foreach($jsonStuff['items'] as $key => $val) { 
    foreach($val as $item){ 
    $comments[$i] = $item['snippet']['topLevelComment']['snippet']['textDisplay']; 
    } 
    $i++; 
}