Перезаливаю сайт на новую платформу с php4 на php7. Столкнулся с такой проблемой если переменная не заявлена в функции то php7 ругается на нее и в итоге я ее объявляю где нибудь как NULL так чтобы она не попала под нужное значение. Ну это пол беды у меня есть строка объединения массивов в один так мне выдается ошибка что такой ключ не задан. Так я же его создаю. Как мне побороть данную ситуацию: Код (Text): $sv['id_prof_f']=array_merge($sv4['id_prof_f'], $sv3['id_prof_f'], $sv2['id_prof_f']); А вот какую ошибку мне выдает: Notice: Undefined index: id_prof_f in Warning: array_merge(): Argument #1 is not an array in Может это из-за того что БД пока пустая и массив с данным ключом не получил свое значение? Мне вначале в БД таблицы заполнить а потом отлаживать функции?
там где формируете этот массив $sv4['id_prof_f'] обязательно проверяйте сформировался он или нет.. если нет - тогда создавайте там пустой массив.. тогда дальше избавитесь от необходимости проверять существование массива... а так то да.. ошибка так и будет вылазить.. вы скармиваете переменную которой не существует в функцию которая ожидает массив) а вот $sv['id_prof_f'] это лучше всего где то вначале объявить как то так $sv = [];
А как проверить? Через if? Потому что там где у меня прописаны POST массивы он ругается в итоге я их закрыл проверкой if($_POST) - подскажите как правильно?
[vs] но их я получаю через созданную функцию которая обращаясь к БД создает список этих ключей и отдает их командой return. Короче я понял из-за того что у меня непонятно как срабатывает Код (Text): mysqli_fetch_all($result, MYSQLI_ASSOC); А точнее по какой то причине при проходе циклом по ключам я получаю ошибку. Т.е. проверка показала вот что - что получив массив и проходя по нему через цикл срабатывает только первый проход а на остальные идет ругань. Хотя выводя полученный массив на экран через print_r я все ключи и данные к ним вижу. Вот как я делаю обращение к БД: Код (Text): $link_db=con_db(); // подключение к БД $query = "SELECT" // команда запроса $result = mysqli_query($link_db,$query); // выполняю запрос $res = mysqli_fetch_all($result, MYSQLI_ASSOC); // получаю массив $rows=count($res); получаю кол-во элементов в массиве for ($num=0; $num<$rows; $num++){ $id = $res[$num]['id']; // отдаю переменной значение } mysqli_close($link_db); // закрываю соединение с БД В созданной отдельно теме мне сказали что все должно работать. Но при прохождении второй раз по циклу получаю ошибку. Полученный массив вне цикла значит его я уже не трогаю и переменные уже им получены. Поясните пожалуйста может еще вот какой моммент - может ли быть ошибка если я пишу вот так: Код (Text): $link_db=con_db(); // подключение к БД $query = "SELECT" // команда запроса $result = mysqli_query($link_db,$query); // выполняю запрос $res = mysqli_fetch_all($result, MYSQLI_ASSOC); // получаю массив $rows=count($res); получаю кол-во элементов в массиве for ($num=0; $num<$rows; $num++){ $id = $res[$num]['id']; // отдаю переменной значение // когда по данному значению надо получить параметр с другой таблицы и тогда я делаю вот как: $query1 = "SELECT" // запрос $result1 = mysqli_query($link_db,$query1); // выполняем запрос $res1 = mysqli_fetch_all($result, MYSQLI_ASSOC); // получаем массив $name = $res1[0]['neme']; // передаем значение переменной так как оно одно то через 0. } mysqli_close($link_db); // закрываем соединение