синтаксическая структура
Здрасте всем.
Глядел код на php, и нашел вот такое кусочек Код:
if (!$buf = trim($buf)) { |
! в начале строки - это "не" (отрицание), но конструкция, похоже все равно ошибочна, тк "=" - это опреатор присваивания $a = 5; обозначает, что переменной $a присвоили значения 5, в отличие от выражения "==" используемому при проверке (проверка равенства по значению), или "===" - (по значению и типу)
|
mar
К сожелению не ошибочная :) Вот весь код. Код:
#!/usr/local/bin/php -q Как бы перевести ее на русский чтоб понять чтож она делает :) |
if (!$buf = trim($buf)) {
continue; } можно понять так ... :clever-ma если не удалось присваивание... переходим на следующюю итерацию :o |
если этим самым присвоением мы задаем переменную то сру
|
Цитата:
В мануале, в таблице приоритетов стоит, что ! производится раньше чем =, то есть получается происходит следущее: сначало берётся отрицание от $buf и потом получившемуся значению присваевается новое значение, а именно trim($buf), что в общем то не имеет большого смысла НО: в мануале внизу в сноске стоит Цитата:
надо скорей всего расценивать как !($buf = trim($buf)), то есть сначало обрубаем пустые места буффера с обоих сторон, и если буффер после этого обрубания остаётся нулевым (то есть ничего кроме пустоты там не было), то сервер пропускает данную итерацию и обрабатывает следущее сообщение в очереди |
vadimiron исттину говоришь...
|
vadimiron
спасибо |
да, vadimiron прав. Так оно и есть. Причем я от греха подальше в таких случаях все-таки использую скобки. Еще одна детать - наличие или отсутствие чего-то по пустоте. Поскольку пустота бывает разная :) (а мануал, как показано выше изменчив =)) имхо спокойней все-таки проверять пустую строку не !, а, скажем
PHP код:
|
mar
Да они просто в одном if-е сделали две действия: 1) обрубание пустот и 2)проверка - типа круто (правда никому не понятно) Мне так тоже не нравится, каждая команда должна одно действие выполнять PHP код:
|
Время: 08:24. |
Время: 08:24.
© OSzone.net 2001-