|
|
|
| Натолкнулся на такой код и нигде не могу найти описание:
if (!file_exists("ip.txt")==false)
|
За что отвечает восклицательный знак перед "file_exists" и за что "==false" в конце? И есть ли смысл их использовать одновременно (разницы не заметил)? | |
|
|
|
|
|
|
|
для: Gubichev
(21.09.2009 в 00:08)
| | что-то надо убрать
Я бы убрал "==false"
Воскл. знак означает "Не".
if (!file_exists("ip.txt"))
|
То есть здесь условие станет верным, если файл не существует. Если бы воскл. знака не было, то условие было верным, если б вайл существовал | |
|
|
|
|
|
|
|
для: neadekvat
(21.09.2009 в 00:13)
| | Всем спасибо, разобрался. | |
|
|
|
|
|
|
|
для: Gubichev
(21.09.2009 в 00:08)
| | Тут вероятно игра на приоритетах оператора == и !. false - это ложь, true - истина. Функция file_exists() возвращает true, если файл ip.txt существует и false - в противном случае. Приоритет оператора == больше, чем !, следовательно сначала значение сравнивается с false,
false == false => true
true == false => false
Затем результаты инвертируются при помощи оператора ! true заменяется на false, а false на ture. Короче, я так понимаю, кто решил выпендриться и заменил этой конструкцией классическое выражение
if(file_exists("ip.txt"))
|
| |
|
|
|
|
|
|
|
для: cheops
(21.09.2009 в 00:16)
| | Все оказалось куда сложнее, чем я думал о_О Индусский код, воистину. | |
|
|
|
|
|
|
|
для: cheops
(21.09.2009 в 00:16)
| | >Приоритет оператора == больше, чем !,
Утверждение ложное.
>следовательно сначала значение сравнивается с false,
>false == false => true , true == false => false
>Затем результаты инвертируются при помощи оператора !
<?php
$a = 5; $b = 3;
echo "<pre>";
echo ' $a :';var_dump($a);
echo ' $b :';var_dump($b);
echo ' !$a :';var_dump(!$a);
echo ' $a == $b :';var_dump($a == $b);
echo '!$a == $b :';var_dump(!$a == $b);
?>
|
$a :int(5)
$b :int(3)
!$a :bool(false)
$a == $b :bool(false)
!$a == $b :bool(false)
|
Хоть это и несущественно, но могу предположить историю возникновения if(!file_exists("ip.txt")==false)
Автороров было двое. Один не знал об операторе ! (или считал его недостаточно наглядным)
Другой слизал уже имеющуюся где-то обратную проверку, и перевернул условие не думая, дописав операцию, работу которой понимал. | |
|
|
|
|
|
|
|
для: Trianon
(21.09.2009 в 00:54)
| | Да, согласен - порядок выполнения обратный, хотя результат в конечном итоге тот же и эквивалентен обычной проверке функции file_exists(). Отрицание схлопывается с отрицанием. | |
|
|
|