$all = array
(
0 => 307,
1 => 157,
2 => 234,
3 => 200,
4 => 322,
5 => 324
);
$search_this = array
(
0 => 200,
1 => 234
);
Je voudrais savoir si $ all contient toutes les valeurs $ search_this et renvoie true ou false. une idée s'il vous plaît?
Regardez array_intersect () .
$containsSearch = count(array_intersect($search_this, $all)) == count($search_this);
Les réponses précédentes font toutes plus de travail que nécessaire. Utilisez simplement array_diff . C'est le moyen le plus simple de le faire:
$containsAllValues = !array_diff($search_this, $all);
C'est tout ce que vous avez à faire.
Un peu plus court avec 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
Je pense que vous recherchez la fonction intersect
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect()
renvoie un tableau contenant toutes les valeurs de array1 qui sont présent dans tous les arguments. Notez que les clés sont préservées.
Que dis-tu de ça:
function array_keys_exist($searchForKeys = array(), $searchableArray) {
$searchableArrayKeys = array_keys($searchableArray);
return count(array_intersect($searchForKeys, $searchableArrayKeys)) == count($searchForKeys); }