Необходимо узнать, содержит ли массив определенное значение.
Используйте функцию in_array():
if (in_array($array, $value)) {
// в массиве $array есть элемент со значением $value
}
Используйте функцию in_array(), чтобы проверить, содержит ли элемент массива значение:
$book_collection = array('Emma', 'Pride and Prejudice', 'Northhanger Abbey');
$book = 'Sense and Sensibility';
if (in_array($book_collection, $book)) {
echo 'Own it.';
} else {
echo 'Need it.';
}
По умолчанию функция in_array() сравнивает данные при помощи оператора ==. Чтобы провести проверку с оператором строгого равенства ===, передайте функции in_array() значение true в качестве третьего параметра:
$array = array(1, '2', 'three');
in_array(0, $array); // true!
in_array(0, $array, true); // false
in_array(1, $array); // true
in_array(1, $array, true); // true
in_array(2, $array); // true
in_array(2, $array, true); // false
В первой проверке функция in_array(0, $array) возвращает true, поскольку для сравнения числа 0 со строкой three PHP приводит строку
three к целому значению. А так как строка three не является числовой
строкой, такой как 2, она превращается в 0. Поэтому функция
in_array() считает, что значения совпадают.
Следовательно, при сравнении чисел с данными, которые могут содержать строки, безопаснее использовать строгое сравнение.
Если функция in_array() много раз применяется к тому же самому
массиву, возможно лучше использовать ассоциативный массив, в котором ключами являются элементы исходного массива. При использовании функции in_array() время поиска меняется по линейному закону,
а в случае ассоциативного массива поиск занимает одинаковое время.
Если нельзя создать ассоциативный массив непосредственно, а требуется получить его, конвертируя обычный массив с целочисленными
ключами, используйте для замены ключей и значений массива функцию array_flip():
$book_collection = array('Emma',
'Pride and Prejudice',
'Northhanger Abbey');
// преобразование из числового массива в ассоциативный
$book_collection = array_flip($book_collection);
$book = 'Sense and Sensibility';
if (isset($book_collection[$book])) {
echo 'Own it.';
} else {
echo 'Need it.';
}
Обратите внимание, что в процессе получения преобразованного массива множество ключей с одинаковым значением сжимаются в один элемент.
См. также
Как определять положение элемента в массиве, смотрите документацию по функции in_array() на странице http://www.php.net/in-array и по функции array_flip() на странице http://www.php.net/array-flip