in_array () и многомерный массив - PullRequest
230 голосов
/ 09 ноября 2010

Я использую in_array(), чтобы проверить, существует ли значение в массиве, как показано ниже,

$a = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $a)) 
{
    echo "Got Irix";
}

//print_r($a);

а как насчет многомерного массива (ниже) - как я могу проверить это значение, существует ли оно в многомерном массиве?

$b = array(array("Mac", "NT"), array("Irix", "Linux"));

print_r($b);

или я не должен использовать in_array(), когда дело доходит до многомерного массива?

Ответы [ 22 ]

0 голосов
/ 27 апреля 2014

как насчет array_search? кажется, что это быстрее, чем foreach в соответствии с https://gist.github.com/Ocramius/1290076 ..

if( array_search("Irix", $a) === true) 
{
    echo "Got Irix";
}
0 голосов
/ 09 ноября 2010

Это первая функция такого типа, которую я нашел в руководстве php для in_array . Функции в комментариях не всегда самые лучшие, но если это не помогает, вы также можете посмотреть там:)

<?php
function in_multiarray($elem, $array)
    {
        // if the $array is an array or is an object
         if( is_array( $array ) || is_object( $array ) )
         {
             // if $elem is in $array object
             if( is_object( $array ) )
             {
                 $temp_array = get_object_vars( $array );
                 if( in_array( $elem, $temp_array ) )
                     return TRUE;
             }

             // if $elem is in $array return true
             if( is_array( $array ) && in_array( $elem, $array ) )
                 return TRUE;


             // if $elem isn't in $array, then check foreach element
             foreach( $array as $array_element )
             {
                 // if $array_element is an array or is an object call the in_multiarray function to this element
                 // if in_multiarray returns TRUE, than return is in array, else check next element
                 if( ( is_array( $array_element ) || is_object( $array_element ) ) && $this->in_multiarray( $elem, $array_element ) )
                 {
                     return TRUE;
                     exit;
                 }
             }
         }

         // if isn't in array return FALSE
         return FALSE;
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...