Почему ответ true?

236
09 мая 2018, 02:46

http://sandbox.onlinephpfunctions.com/code/710e111f015bdbbd0067448533303c6926e7b10a

$a = in_array('test', [0] );
var_dump($a);

Что-то я не понял почему ответ true показывается?

Answer 1
Ответ

Используйте строгий режим у функции in_array()

$a = in_array('test', [0], true);
var_dump($a);
Объяснение

Потому что в PHP слабая динамическая типизация. Когда вы ищете строку в массиве с числами, то интерпретатор делает приведение типов. В вашем случае строка test преобразуется к числу и будет равна 0.

Если вы попробуйте найти строку test в массиве, где нет числа 0, то будет false:

$a = in_array('test', [1] );
var_dump($a);

В PHP нужно всегда про это помнить и не использовать неявное преобразование, а использовать явное приведение типов и строгий режим сравнения.

var_dump('test' == 0);   // true
var_dump('test' === 0);  // false
var_dump('1test' == 1);  // true
var_dump('1test' === 1); // false

В документации есть полезная таблица сравнений разных типом между собой – http://php.net/manual/ru/types.comparisons.php#types.comparisions-loose

READ ALSO
Аппроксимация на php

Аппроксимация на php

Нужно разобраться с аппроксимациейЕсть массив, допустим формата (формат может быть любой, это для примера)

248
Восстановление пароля удаленно через ldap

Восстановление пароля удаленно через ldap

Недавно пришлось на проекте сделать авторизацию через удаленный ldap серверСкажите, есть ли возможность в этом случае сделать функционал...

252
Вывод информации о товаре в списке заказов Опенкарт

Вывод информации о товаре в списке заказов Опенкарт

Подскажите, как мне вывести данные о заказанном товаре в списке заказов в профиле опенкарт 2, например, фото, описание и название? Возможно,...

185
Не пойму как отрабатывает скрипт

Не пойму как отрабатывает скрипт

Вот скрипт, выводит на странице три отзыва посетителей случайным образом(и рисует оценку звездочками)Файлик текстовый, формата: х|х|х|х|

239