PHP array_search

#php #arrays

#php #массивы

Вопрос:

Существует ли какая-либо функция, которая выполнит эквивалент array_search с помощью $ needle, который является массивом? Вроде бы, это было бы идеальным решением:

 $needle = array('first', 'second');
$haystack = array('fifth','second','third', 'first');

// Returns key 1 in haystack
$search = array_search( $needle, $haystack );
  

Если нет функции, какие-либо другие функции, которые принимают иглы, которые могут быть массивами, которые я могу использовать для создания пользовательской функции?

Ответ №1:

Это может помочь в создании вашей функции:

 $intersection = array_intersect($needle, $haystack);

if ($intersection) // $haystack has at least one of $needle

if (count($intersection) == count($needle)) // $haystack has every needle
  

Ответ №2:

Вы можете использовать array_intersect() : http://php.net/manual/en/function .array-intersect.php

 if (empty(array_intersect($needle, $haystack)) {
   //nothing from needle exists in haystack
}
  

Ответ №3:

 $needle = array('first', 'second');
$haystack = array('fifth','second','third', 'first');

// Returns key 1 in haystack


function array_needle_array_search($needle, $haystack)
{
        $results = array();
        foreach($needle as $n)
        {
                $p = array_search($n, $haystack);
                if($p)
                    $results[] = $p;
        }
        return ($results)?$results:false;
}

print_r(array_needle_array_search($needle, $haystack));
  

Ответ №4:

 $needle = array('first', 'second');
$haystack = array('fifth','second','third', 'first');

if(in_array($needle, $haystack)) {
     echo "found";
}