2016-09-14 5 views
1

У меня есть два массива и вы хотите проверить, находится ли второй массив в первом. Массивы:PHP-массив в массиве с многомерными массивами

Первый массив:

array(1) { 
    ["group"]=> 
    array(3) { 
    ["create"]=> 
    bool(true) 
    ["edit"]=> 
    bool(true) 
    ["delete"]=> 
    bool(true) 
    } 
} 

Второй массив

array(1) { 
    ["group"]=> 
    array(1) { 
    ["create"]=> 
    bool(true) 
    } 
} 

Глубина может отличаться

in_array не работает -> массив ошибка преобразования, и это не делает nd распределение связей Я пытался много искать и тестировать, но не нашел то, что мне нужно. Надеюсь, кто-то из вас может мне помочь!

+0

Попробуйте проверить это http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array – Sasikumar

+0

@Sasikumar, что не работает, я уже попробовал это, и это также не подходит моя цель. –

+0

Возможный дубликат [как проверить один массив как точное подмножество другого массива - php-массив] (http://stackoverflow.com/questions/12276565/how-to-check-one-array-is-exact-subset-of -another-array-php-array) –

ответ

0

С подходом от @Jignesh Prajapati я нашел наконец решение. Спасибо!

function test($first_array, $second_array) { 
    $found = FALSE; 

    if(is_bool($second_array) && is_bool($first_array)) { 
     return $second_array === $first_array; 
    } 

    if(is_array($first_array) && is_array($second_array)) { 
     foreach($second_array as $key => $value) { 
      foreach($first_array as $key_1 => $value_1) { 
       if($key === $key_1) { 
        $found = test($value_1, $value); 
       } 
      } 
     } 
    } 

    return $found; 
} 
1
$cnt = 0; 
    foreach ($second_array as $key => $value) { 
      foreach ($first_array as $key_1 => $value_1) { 
       if($key == $key_1){ 
        $cnt++; 
       } 
      } 
    } 

    if($cnt > 0){ 
     echo "second array element in first array"; 
    }else{ 
     echo "not in array"; 
    } 
+0

Я вижу, что вы пробовали, хороший подход, но он не подходит, если второй массив '['group' => ['list' => FALSE]]' –

+1

$ cnt = 0; \t, если (количество ($ second_array)> 0) { \t \t Еогеасп ($ second_array, как $ ключ => $ значение) { \t \t \t, если (количество ($ first_array)> 0) { \t \t \t \t Еогеасп ($ first_array в $ Key_1 => $ значение_1) { \t \t \t \t \t если ($ ключ == $ Key_1) { \t \t \t \t \t \t $ CNT ++; \t \t \t \t \t} \t \t \t \t} \t \t \t} \t \t} \t} –

Смежные вопросы