/208.include.cache.php : 20) PHP warning: Invalid argument supplied for foreach()
        Доброго дня. В журнал получаю ошибки
    
    
                                                        /208.include.cache.php : 20) PHP warning: Invalid argument supplied for foreach()сниппет с id 208 тянет фотки с яндекс диска<?php
$newpath = str_replace("https://disk.yandex.ru/client/disk", "", "$input");
$path = $newpath;
$fields = '_embedded.items.preview,_embedded.items.name';
$headers = array("Authorization: OAuth " . $modx->getOption('yandexdiskuploader_access_token'), "Content-Type: application/json");
$ch = curl_init('https://cloud-api.yandex.net:443/v1/disk/public/resources?public_key=...' . urlencode($path) . '&fields=' . $fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_decode($res, true);
foreach ($res as $emb) {
      foreach ($emb as $item) {
            foreach ($item as $names) {
                foreach ($names as $k => $v) {
                if ($k == 'preview'){
                 echo '<div class="p-1 img-userload-w"><img src=' . $v . ' class="img-userload rounded"></div>';
                }
             }
         }
      }
}фотки отображаются, вроде бы всё работает, но загрузка страницы в разы увеличивается, явно из-за этих ошибок. Что-то связанно с json_decode?    
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 4
                видимо структура $res не так проста чтобы делать вложенные циклы foreach без проверки на тип переменной. Попробуйте вставить логирование в начале каждого цикла, чтоб увидеть который цикл падает и с какими аргументами.            
                    
                Массив $res 
                    Array
(
    [_embedded] => Array
        (
            [items] => Array
                (
                    [0] => Array
                        (
                            [preview] => ...
                            [name] => IMG_20190630_153913-742af.jpg
                        )
                    [1] => Array
                        (
                            [preview] => ...
                            [name] => IMG_20190704_162123-23458.jpg
                        )
                )
            [public_key] => ...
        )
)            
                ну вот этот public_key на уровне items похоже все и портит. лучше берите сразу цикл по $res['_embedded']['items'], незачем плодить столько вложенных циклов            
                    
                Да, действительно! Огромное спасибо
                    $res = json_decode($res, true);
foreach ($res['_embedded']['items'] as $names) {
    foreach ($names as $k => $v) {
        if ($k == 'preview'){
         echo '<div class="p-1 img-userload-w"><img src=' . $v . ' class="img-userload rounded"></div>';
        }
    }
}так без ошибок. Правда время загрузки не сократилось, видимо это уже из-за запросов к яндекс диску            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.