$s="d[уйц12344l]";
$c=[
0,1,2,3,4,5
];
in_array($s,$c)===true?$res='входит':$res="нет";
echo $res;
Почему выводит "входит"?
В вашем коде используется сравнение элементов без учёта их типов. При этом массив содержит числа, а искомое значение - строка. В результате чего строка приводится также к целому числу. Правила приведения в данном случае говорят, что $s будет равно 0. А после данного преобразования 0 уже находится в массиве.
Вы можете использовать третий параметр функции in_array для учета типов операндов, тогда вместо простого == будет использоваться ===
$s = "d[уйц12344l]";
$c = [ 0,1,2,3,4,5 ];
echo in_array($s, $c, true) ? 'входит' : "нет";
которое даст ответ "нет"
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости