За последние 24 часа нас посетили 18173 программиста и 1698 роботов. Сейчас ищут 1550 программистов ...

Нужна помощь PHP Warning: Undefined array key

Тема в разделе "Сделайте за меня", создана пользователем Roni909, 27 ноя 2024.

  1. Roni909

    Roni909 Гость

    С нами с:
    27 ноя 2024
    Сообщения:
    1
    Симпатии:
    0
    Всем привет, нужна помощь.
    Делали Parser по PHP, парсири ссылки на изображения по API.
    Пол года работало хорошо, но в один момент начал выдавать ошибку
    Warning: Undefined array key 0 in C:\Users\user\Desktop\vendor photo\parser.php on line 113
    PHP Warning: foreach() argument must be of type array|object, null given in C:\Users\user\Desktop\vendor photo\parser.php on line 14

    functionfindPhoto($arr)
    {
    $t = false;
    foreach ($arr as $value){
    if($t){
    return$value;
    }
    $t = ($value == "photo");
    if(is_array($value)){
    $p = findPhoto($value);
    if($p){
    return$p;
    }
    }
    }
    returnfalse;
    }


    // Преобразование SimpleXMLElement в массив
    $array = json_decode( json_encode( $result[0]), true);

    returnfindPhoto($array);
    }

    Сам не разбираюсь, нужна помощь!
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    439
    Симпатии:
    84
    Адрес:
    Бавария, Германия
    Добрый день!
    Это Ваш код:
    PHP:
    1. function findPhoto($arr)
    2. {
    3.     $t = false;
    4.     foreach ($arr as $value){
    5.         if($t){
    6.             return $value;
    7.         }
    8.         $t = ($value == "photo");
    9.         if(is_array($value)){      
    10.             $p = findPhoto($value);
    11.             if($p){
    12.                 return $p;
    13.             }
    14.         }
    15.     }
    16.     return false;
    17. }
    18.  
    19.  
    20.     // Преобразование SimpleXMLElement в массив
    21.     $array = json_decode( json_encode( $result[0]), true);
    22.  
    23.     return findPhoto($array);
    24. }
    Последняя закрывающаяся скобка не понятно к чему.
    Ошибка из-за того, что массива в функцию не передаётся
    Это "мертвому припарки", но убрать ошибку можно так
    PHP:
    1. foreach ((array) $arr as $value){
    , а лучше позаботится о том, что бы вызов был с массивом.
    Это ошибка:
    PHP:
    1.    if($t){
    2.             return $value;
    3.         }
    4.         $t = ($value == "photo");
    Переменная $t долна определяться перед if или д.б.
    PHP:
    1. if($value == "photo"){
    2.             return $value;
    3.         }
    Удачи!