2015-09-12 3 views
1

Я часто вижу тестирование скриптов, если переменная отличается от FALSE.Зачем писать? == false вместо == true?

Это пример от php man функции «fgetcsv», но я думаю, что видел это тоже на Java.

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    //... 
} 

Даже если он не изменится, то, казалось бы, более естественно идти, как:

while (($data = fgetcsv($handle, 1000, ",")) === TRUE) { 
    //... 
} 

Есть ли причина, второй код меньше логики или менее эффективным?

+1

[Null vs. False vs. 0 в PHP] (http://stackoverflow.com/questions/137487/null-vs-false-vs-0-in-php) и [Как работает true/false в PHP?] (Http://stackoverflow.com/questions/2382490/how-does-true-false-work-in-php) –

ответ

2

Общепринятая идиома PHP заключается в том, чтобы функция возвращала какое-либо значимое значение или логическое значение FALSE в случае некоторого отказа. В случае fgetcsv возвращается массив индексов или FALSE, когда больше нет значений для возврата.

Использование === TRUE здесь просто не будет работать - индексированный массив не является логическим TRUE, но он наиболее определенно !== FALSE.

+0

Хорошо, очень четкий ответ. Так что это специфично для PHP и языков, которые разделяют эту логику. Благодарю. –

Смежные вопросы