присвоение массивов

KOLANICH

Новичок
присвоение массивов

PHP:
while($res&&$r1=mysql_fetch_array($res)&&!preg_match("/(.+\t)*$pass.*/",$r1))$r2=$r1;
$r2 почему-то true после завешения цикла
 

Inferno

Новичок
возможно что обработка while происходит справо на валево и так же при не совпадении одного из условий оставшиеся не проверяются следовательно и не выполняются

сделай var_dump всех переменных в цикле

и r1 это строка из кучи строк, что бы брать значение из r1 нужно обратится по текстовому индексу ~ r1['id']
 

Inferno

Новичок
происходит справо на валево
я не помню точно в каким компиляторах\интерпритаторах так происход, приминимо php я лишь предположил...

при не совпадении одного из условий оставшиеся не проверяются следовательно и не выполняются
вот это правда, так как условие && (and) если бы было условие ||(or) тогда разбиралась бы вся строка условия
 

dimagolov

Новичок
Inferno, ну я уже сказал, что нужно читать, чтобы не писать ерунды. чего продолжаешь?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
KOLANICH
перепиши в читабельном стиле и отдебажь
не надо писать для PHP как для микроконтроллеров - на количестве строк кода не стоит экономить
 

Adelf

Administrator
Команда форума
Ненавижу такие вот понты с условиями в while.

Элементарщину продебажить - никак. Но попонтоваться с порядком выполнения сравнения - всегда пожалуйста.
 

KOLANICH

Новичок
не совсем понимаю
что мне сделать, чтобы заработало
и причём тут приоритет операций
 

Inferno

Новичок
Ненавижу такие вот понты с условиями в while.

Элементарщину продебажить - никак. Но попонтоваться с порядком выполнения сравнения - всегда пожалуйста.
дело говорит, перепиши код в более простом виде и сделай dump переменных с помощью var_dump()

вообще !preg_match("/(.+\t)*$pass.*/",$r1) где r1 у тебя результат mysql_fetch_array который является массивом/
r1 нельзя прочитать указанием просто имени нужно указать индекс ~ r1['some_index']
 

Фанат

oncle terrible
Команда форума
Сдается мне, там перед этим кодом SELECT * FROM table стоит
 

dimagolov

Новичок
и причём тут приоритет операций
при том, что ты не понимаешь что и в каком порядке исполняется в условии твоего цикла. а исполняется оно НЕ ТАК, как ты ожидаешь.

самый простой совет - расставь скобки в соответствии с тем порядком, который тебе нужен. и ставь их ВСЕГДА там, где встречается более одного оператора в выражении, если прочитать и понять страницу мана про приоритет операций для тебя непосильная задача.
 

KOLANICH

Новичок
если результат запроса не пустой,то пропарсить его в массив
пока что-то есть что парсить в массив-парсим и проверяем по регэкспу
если нашли,что искали-прекращаем
результат заносим в перемменную $r2 ($r1 в конце равен 0)
 

dimagolov

Новичок
KOLANICH, вот не понимаю, тебе проблему решить или графоманством позаниматься? ты не растекайся мыслями по древу, а делай, как тебе сказано: расставь скобки согласно своей задумке.

потом, после того, как код заработает, сможешь подумать что же выполнялось не так.
 

Adelf

Administrator
Команда форума
KOLANICH
А теперь просто выполни в своей голове свой же код и погляди как именно он выполняется.
Ошибка элементарнейшая.
 
Сверху