У меня есть форма, которая представляет массив пользовательских ролей для обработки сервером. Вот пример $data['roles']
отправленный форме:Как проверить, присутствует ли какое-либо значение в массиве в другом массиве?
Array ([0] => 5 [1] => 16)
Я хочу, чтобы проверить, если $data['roles']
содержит либо один из значений 16, 17, 18 или 19. Как вы можете видеть в примере, она содержит 16. in_array
кажется, что логичным выбором здесь, но передавая массив значений как игла in_array
не работает:
$special_values = array(16, 17, 18, 19);
if (in_array($special_values, $data['roles'])) {
// this returns false
}
ни делает проходя те же значения в массиве:
$special_values = array(5, 16);
if (in_array($special_values, $data['roles'])) {
// this also returns false
}
Кроме того, места переключения между двумя массивами в виде иглы и стога сена не изменяют результат. Если бы я просто спросить, если 16 находится в массиве, он отлично работает:
$special_value = 16;
if (in_array($special_value, $data['roles'])) {
// this returns true
}
documentation дает примеры использования массивов как иглы, однако, кажется, структура должна быть точно такой же в стоге сена для того, чтобы вернуться true
. Но тогда я не понимаю, почему мой второй пример не работает. Я, очевидно, что-то делаю что-то неправильно или что-то здесь не вижу.
Каков наилучший способ проверить, есть ли любые значения в одном массиве в другом массиве?
Редактировать:This question (возможно дубликат) не спрашивает то же самое. Я хочу сопоставить любое значение в одном массиве с любым значением в другом. Связанный вопрос хочет совместить все значения в одном массиве со значениями другого.
[ 'array_intersect'] (http://php.net/ручной/EN/весело ction.array-intersect.php) - это то, что вы ищете. – Andrew
[array_intersect()] (http://www.php.net/manual/en/function.array-intersect.php) может быть более логичным выбором –
Возможный дубликат [in \ _array, но игла - массив, что альтернатива для него] (http://stackoverflow.com/questions/2304436/in-array-but-needle-is-array-what-the-alternative-for-it) –