2013-07-28 2 views
2

Я уверен, что массив I test равен null. Даже делая var_dump(array) печатает array(0) { }.Ошибка PHPUnit assertNull()

Но тест $this->assertNull($array); не работает.
Наоборот, когда я проверяю ниже кода он входит if условие:

if ($array == null) { 
    echo "Entered"; 
} else { 
    echo "Not Entered"; 
} 

Я не понимаю, почему это так. Пожалуйста, объясните мне, знает ли кто-нибудь причину.

ответ

4

array(0) { } - пустой массив.

null Отсутствие массива вообще.

Это не одно и то же.

Проблема с == заключается в том, что она пытается ввести жонглирование значений, соответствующих им. Пустым массивом является «ложь», как и null.

Если вы хотите увидеть разницу, вместо этого используйте ===, который не набирает жонглирование, а также сравнивает тип;

$array1 = null; 
$array2 = array(); 
if ($array1 == null) echo '1';  // $array1 is "similar to" null. 
if ($array1 === null) echo '2'; // $array1 is null 
if ($array2 == null) echo '3';  // $array2 is "similar to" null 
if ($array2 === null) echo '4'; // $array2 is null 

>>> 123 

More on the comparison operators here.

+0

Тогда почему '' if ($ array == null) 'выполняется. – Geek

+2

Потому что он приписывает значения для их сравнения. Попробуйте использовать '$ array === null'. И посмотрите на http://www.php.net/manual/en/types.comparisons.php, чтобы узнать, что сравнивает PHP. – Sven

+0

Спасибо, к примеру, и объяснение. – Geek

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

  • Нет связанных вопросов^_^