while ($row = mysql_fetch_array($results)) { $results_array[$row['post_id']] = $row; $arr = array($row[2] => $row[3]); $location = trim($arr[cp_check_where_to_show_video]); $video = trim($arr[cp_embed_video]); echo $video; if($location=='Video of the Day') { echo $location."\n"; echo "---"; echo $video; echo "---"; } } Output: Video Text Video of the Day ------- NULL
Вот что. Предположим, что у меня есть код выше, «видео» были получены из базы данных. До сих пор у меня нет проблем с моими запросами, пока я не добавил оператор if.
Первое эхо выводит ожидаемые результаты, но внутри оператора if «видео» становится NULL. Я мог бы получить инструкцию if и выводить что угодно, кроме $ video.
Может кто-нибудь рассказать, что пошло не так, или, возможно, ошибается в вышеупомянутых заявлениях? Weird.
(На самом деле комментарий, но добавление кода, так что здесь)
Решение отладки 1: добавление отчетов об ошибках; незадолго до этого, добавьте
error_reporting(E_ALL); ini_set('display_errors', 'on');
и посмотри, что это тебе дает.
Решение отладки 2:
Может быть случай «Редактор вставил странный характер, который я не вижу». Предложение состоит в том, чтобы ПОЛНОСТЬЮ удалить строки внутри оператора if (выберите всю строку, нажмите delete), а также строки, которые ссылаются на $ video, и повторно введите их вручную (без копирования / вставки). Скрытые персонажи случаются – и единственное решение, о котором я могу думать.
Часто люди забывают и используют =
вместо ==
в сравнении. Он устанавливает условие в true
и если $video
находится в состоянии, вы можете случайно установить для $video
значение null
.
Я не знаю, но это может быть так.
В первый раз, когда он перехватывает $ video, но не входит в if
. Второй раз это NULL, поэтому он не var_dumps
ничего, кроме как идет, если var_dumps
NULL
РЕДАКТИРОВАТЬ
Например, поставьте echo '----';
над вашим echo $video;
проверить, является ли результат чем-то вроде
---- video text ---- Video of the Day NULL
Если у вас есть что-то вроде
---- video text Video of the Day NULL
то это полная тайна для меня.