|
|
|
|
|
для: Commander
(19.06.2014 в 19:49)
| | Ещё символы с ASCII кодами 0x09, 0x0A, 0x0D, 0x00 и 0x0B. | |
|
|
|
|
|
|
|
для: confirm
(19.06.2014 в 07:02)
| | А что еще? | |
|
|
|
|
|
|
|
для: Igorek
(19.06.2014 в 09:29)
| | спасибо) | |
|
|
|
|
|
|
|
для: Commander
(19.06.2014 в 07:00)
| | вопрос не об этом был) | |
|
|
|
|
|
|
|
для: Igorek
(19.06.2014 в 09:29)
| | Это же руководство гласит дословно "большинства операторов". Я просто не упоминаю всех, речь шла о конкретном примере (конкретных операторов). Поэтому и надо читать и о приоритетах, и об ассоциативности, чтобы понять что значит && и AND.
PS. Наверное проще всего понять что значит приоритет, это в тернарном операторе, пытаясь присвоить, а затем использовать, но написать так:
$a = $c = $m-$n ? $c : null; | |
|
|
|
|
|
|
|
для: confirm
(19.06.2014 в 06:14)
| | > в РНР оператор присваивания (=) имеет самый низший приоритет по сравнению с другими операторами
Здесь не согласен. Согласно раздела руководства, который вы упоминали http://www.php.net//manual/ru/language.operators.precedence.php операторы and,xor,or и "," имеют приоритет ниже, чем оператор присваивания. Что легко доказывается примером:
<?
$pass = 'aaaa';
$fio ='vasya pupkin';
if($pass = trim($pass) AND $fio = trim($fio))
{}
echo $pass; // aaaa
echo $fio; // vasya pupkin
|
поменяли && на AND и получили "ожидаемый" результат | |
|
|
|
|
|
|
|
для: Commander
(19.06.2014 в 07:00)
| | Не правда, не только пробелы. | |
|
|
|
|
|
|
|
для: moonfox
(19.06.2014 в 03:54)
| | Функция trim() возвращает строку, переданную в качестве первого параметра, удалив из ее начала и конца строку, переданную в качестве второго параметра. Если второй параметр не передан, она удаляет пробелы. | |
|
|
|
|
|
|
|
для: moonfox
(19.06.2014 в 05:58)
| | То, что результат присваивания, это значение вас интересующее, а не булев результат проверки истинности. Другими словами, РНР нет нужды запоминать в этом случае булев результат, достаточно его просто вернуть. Вот из этого как раз и вытекает, что по логике конструкция должна быть такой:
if(if($a == 1) && if($b == 2) && if($c == 3) ...)
Ваше действие простое, а ведь могут быть сложные логически конструкции, в которых тоже нужно сохранить возвращаемое значение, и при этом учитывать еще и приоритет, что тогда?
Кстати, именно потому, что крайние пробелы, а также слеши, это мусор (и крайняя нежелательность, особенно второго), а их удаление с последующим присваиванием результата непосредственно в логическом выражении может сделать это выражение чрезмерно громоздким, и надо выполнять эти операции до проверки непосредственно условий. Как это можно сделать, я вам уже писал.
Только сейчас обратил внимание на:
>почему не считать по умолчанию, что если в if есть присвоение, то проверять переменную со значением ?
То что я писал выше, это упрощенное и обобщенное, а на самом деле, поведение этого обуславливается тем, что в РНР оператор присваивания (=) имеет самый низший приоритет по сравнению с другими операторами.
Обязательно зайдите в раздел руководства "Операторы -> Приоритет оператора". В нем есть пояснение и об "ассоциативности", что нужно очень хорошо понимать, дабы правильно расставить те же скобки. | |
|
|
|
|
|
|
|
для: confirm
(19.06.2014 в 05:48)
| | очевидно true не может быть на $v если в ней не состоялось присвоение от ф-ции
очевидно под под "свою очередь" понимается отработка ф-ции и присвоение соответственно
так что я написал именно то.
почему не считать по умолчанию, что если в if есть присвоение, то проверять переменную со значением ? | |
|
|
|
|