Как избежать проблем с PHP in_array с помощью параметра $strict

Например, следующий код проверяет, существует ли значение «апельсин» в массиве $fruits:

$fruits = array("банан", "апельсин", "яблоко", "клубника");
if (in_array("апельсин", $fruits)) {
echo "Значение есть в массиве.";
} else {
echo "Значения нет в массиве.";
}

Приведенный выше код выведет «Значение есть в массиве.».

Он также принимает необязательный третий аргумент, $strict , для которого, если установлено значение true, функция также будет проверять типы значений. Поэтому, если вы ищете значение, равное 0, в массиве, который также содержит строку «0», использование строгой проверки вернет false, а нестрогая проверка вернет true.

$arr = array(0, "0");
if (in_array("0", $arr, true)) {
echo "0 найдено как строка";
}
elseif (in_array(0, $arr, true)) {
echo "0 найдено как integer";
}

Важно отметить, что если третий аргумент, $strict, не передается в функцию, по умолчанию он принимает значение falseЭто означает, что функция будет выполнять свободное сравнение (==) вместо строгого сравнения (===). Это может привести к неожиданным результатам, особенно при поиске значений разных типов. Например, следующий код вернет true, если параметр $strict не передан, потому что «0» приблизительно равен 0:

$arr = array("1", "2", "3", "0");
if (in_array(0, $arr)) {
echo "0 найден в массиве";
}

Это выведет «0  найден в массиве».

Однако в определенных ситуациях это может вызвать проблемы, поэтому рекомендуется всегда передавать true в качестве третьего аргумента, чтобы функция выполняла строгое сравнение и возвращала ожидаемые результаты.

Таким образом, функция in_array() — это полезная функция в PHP для проверки наличия значения в массиве. Но опасно не передавать параметр $strict, чтобы избежать непредвиденных результатов, и рекомендуется всегда использовать параметр $strict для получения лучших результатов.

Коментарии

Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!

Написать коментарий