Почему входит в массив?

172
19 апреля 2019, 01:40
$s="d[уйц12344l]";
$c=[
    0,1,2,3,4,5
];
in_array($s,$c)===true?$res='входит':$res="нет";
echo $res;

Почему выводит "входит"?

Answer 1

В вашем коде используется сравнение элементов без учёта их типов. При этом массив содержит числа, а искомое значение - строка. В результате чего строка приводится также к целому числу. Правила приведения в данном случае говорят, что $s будет равно 0. А после данного преобразования 0 уже находится в массиве.

Вы можете использовать третий параметр функции in_array для учета типов операндов, тогда вместо простого == будет использоваться ===

$s = "d[уйц12344l]";
$c = [ 0,1,2,3,4,5 ];
echo in_array($s, $c, true) ? 'входит' : "нет";

которое даст ответ "нет"

READ ALSO
Поиск блока кода с последующей заменой в SQL

Поиск блока кода с последующей заменой в SQL

Всем приветНужно найти и поменять блок кода в БД

173
PHP не принимает ajax

PHP не принимает ajax

Всем здравствуйте) Что имею: Ссылка:

151
Проблема с загрузкой фото PHP

Проблема с загрузкой фото PHP

Друзья, доброго времени сутокУ меня в проекте идет загрузка фотографий разной, но заданной ширины и высоты на разных страницах

126
WP_Query не выводит данные!

WP_Query не выводит данные!

Есть запрос WP_Query, локально все работает и выводит все данные которые нужно, залил на боевой хостинг сайт, все запросы которые через WP_Query перестали...

161