Intereting Posts
google-api-php-client – Диск – Вставка файла – Создание текстового файла – Содержимое не добавляется Как я должен возвращать несколько переменных в функцию (для лучшей практики)? Преобразование строки массива PHP в массив Устранение неполадок «Ошибка разделителя не должна быть буквенно-цифровой или обратной косой чертой» при изменении ereg () на preg_match () постоянство объекта в php Как я могу создать в целом эстетически приятный диапазон цветов линейного графика (неизвестный номер), начиная с базового цвета? Создание таблицы из PHP не выполняется Как создать ZIP-файл с помощью PHP и удалить его после загрузки пользователем? PHP: вопрос новичков – открытая база данных Случай, когда «document.ready» препятствует Интеграция Google BigQuery с PHP В чем разница между переменными сеанса и глобальными переменными в php? Разница между cURL и веб-браузером? Вызов пользовательских функций в PHP eval () Неустранимая ошибка: невозможно обновить

php проверяет, содержит ли массив все значения массива из другого массива

$all = array ( 0 => 307, 1 => 157, 2 => 234, 3 => 200, 4 => 322, 5 => 324 ); $search_this = array ( 0 => 200, 1 => 234 ); 

Я хотел бы узнать, содержит ли $ all все значения $ search_this и возвращает true или false. любая идея, пожалуйста?

Посмотрите на array_intersect () .

 $containsSearch = count(array_intersect($search_this, $all)) == count($search_this); 

Предыдущие ответы все делают больше работы, чем нужно. Просто используйте array_diff . Это самый простой способ сделать это:

 $containsAllValues = !array_diff($search_this, $all); 

Это все, что вам нужно.

Немного короче с array_diff

 $musthave = array('a','b'); $test1 = array('a','b','c'); $test2 = array('a','c'); $containsAllNeeded = 0 == count(array_diff($musthave, $test1)); // this is TRUE $containsAllNeeded = 0 == count(array_diff($musthave, $test2)); // this is FALSE 

Я думаю, вы ищете функцию пересечения

 array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) 

array_intersect() возвращает массив, содержащий все значения array1, которые присутствуют во всех аргументах. Обратите внимание, что ключи сохраняются.

http://www.php.net/manual/en/function.array-intersect.php

Как насчет этого:

function array_keys_exist($searchForKeys = array(), $searchableArray) { $searchableArrayKeys = array_keys($searchableArray); return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); }