Неожиданная работа функции in_array в php

Недавно обнаружил, что в моем скрипте функция in_array() выдает неверное на первый взгляд значение. Т.е. в параметрах ее задаю явно не существующий элемент массива, а она упорно возвращала значение TRUE, мол значение это есть в массиве. Оказалось все просто. В массиве по которому ведется проверка есть элемент 0, а значение которое проверялось на присутствие в массиве — строка, которая при приведении типа приводилась к 0.


$array = array('one', 'two', 0);
var_dump(in_array('three', $array));

Для того чтобы in_array() еще производила проверку типа, нужно третьим параметром передать ей TRUE. 


var_dump(in_array('three', $array, TRUE));

Все таки документация, вещь полезная и нужная.

Одна мысль про “Неожиданная работа функции in_array в php”

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.