присваивания в условиях помогите разобраться

  • Автор темы Автор темы t43
  • Дата начала Дата начала

t43

Новичок
PHP:
$a = array('0', 'a','b','c');

echo array_search('c', $a); //3
if($lines = array_search('c', $a) !=  false)
{
    echo $lines; //1
}

В общем, что тут не так?
 
не умеешь пользоваться присваиванием в условиях - не используй их. Вынеси присваивание наружу.
 
но если прям очень приспичило писать больше одного оператора в строку - бери каждый оператор в скобки.
но основная мысль была в том, что ели ты не понимаешь какой-то код, то лучше его и не использовать.
Сам же потом себе спасибо скажешь .

Теория, почему надо брать в скобки: http://php.net/manual/ru/language.operators.precedence.php
 
  • Like
Реакции: t43
t43
пиши свой код так, словно читать его будет человек уровнем слабее. поэтому луше не использовать подобные фишки с приоритетом опереторов.
месжду прочем почитай доку к http://php.net/array_search и поймёшь почему твой код даже если расставить скобки будет всё равно некорректным.
 
t43
пиши свой код так, словно читать его будет человек уровнем слабее. поэтому луше не использовать подобные фишки с приоритетом опереторов.
месжду прочем почитай доку к http://php.net/array_search и поймёшь почему твой код даже если расставить скобки будет всё равно некорректным.
то что array_search может вернуть нуль и нужно проверять так: !== false я в курсе, просто кода на форуме набирал пропустил.
 
Дело не в этом, а в приоритете операторов. В этом случае сначала выполняется array_search('c', $a) != false что дает true, а потом выполняется $lines = true, что собственно записывает в переменную единицу. Чтобы явно указать приоритет в операторах заключайте их в скобки.

Задача:
PHP:
$b = true;
$c = false;
$a = $c or $b;

var_dump ($a);
Что запишется в переменную $a ?
 
Сверху