В PHP, если 0 == false - это true, а false == false - это true, как проверить на false? - PullRequest
4 голосов
/ 14 апреля 2011

Я особенно заинтересован в тестировании возвращаемого значения preg_match, которое может быть 1, 0 или false.

Ответы [ 5 ]

14 голосов
/ 14 апреля 2011
$val === false;

Пример:

0 === false; // returns false
false === false; // returns true

Использование оператора тройного равенства / строгое сравнение

6 голосов
/ 14 апреля 2011

Используйте === сравнение типов. Проверьте руководство: http://www.php.net/manual/en/language.operators.comparison.php

3 голосов
/ 14 апреля 2011
$num === 0; //is true if $num is 0 and is an integer
$num === 0; //is false if $num is 0 and is a string

=== проверяет тип и равенство

так:

 0 === false; //will return false
 false === false; //will return true
0 голосов
/ 02 августа 2012

preg_match () и preg_match_all () возвращают количество найденных совпадений или false в случае ошибки.Однако это означает, что он вернет 0, если совпадений не найдено, поэтому проверка явно на ложь, а затем попытка перебрать пустой набор все еще будет проблематичной.

Я обычно проверяю на ложь, затем проверяю снова на количество совпадений передзацикливание результатов.Что-то с эффектом:

$match = preg_match_all($pattern, $subject, $matches);

if($match !== false)
{
    if(count($matches) > 0)
    {
        foreach($matches as $k=>$v)
        {
            ...
        }
    }
    else
    {
        user_error('Sorry, no matches found');
    }
}
else
{
    die('Match error');
}
0 голосов
/ 14 апреля 2011

Используйте оператор not ! для проверки на ложь: (! 0 === false) всегда ложь.

...