2014-01-19 2 views
1

У меня есть двухмерный двухмерный массив, подобный этому. Они динамически создаются, поэтому внутри они могут иметь различное количество массивов.php проверить, если все значения из одного двухмерного массива находятся в другом двумерном массиве

$userInput['shops'] = Array 
(
    [0] => Array 
    (
     [id] => 9 
    ) 
) 

и другой, который выглядит следующим образом:

$userShops = Array 
(
    [0] => Array 
    (
     [id] => 9 
    ) 
    [1] => Array 
    (
     [id] => 10 
    ) 
) 

Первый массив является то, что я receve от должности, идентификаторы отдельных магазинов. Второй массив показывает все идентификаторы магазинов, которые есть у пользователя. Как я могу проверить, можно ли найти все значения из userInput в массиве userShops? Я использую это для проверки, поэтому мне нужно увидеть, соответствуют ли все значения из столбца действительным значениям для пользователя.

Я попытался сделать это вот так, но я получаю oknot как результат, поэтому я думаю, что это должно быть построено по-другому, возможно, чтобы каким-то образом совместить совпадения ... Вы должны игнорировать мой код, потому что я думаю, что это плохой подход .. Короче, мне нужно проверить, можно ли найти все значения из первого массива во втором, если не показывать ошибку.

if(isset($userInput['shops']) && is_array($userInput['shops'])){ 
    foreach($userInput['shops'] as $input){ 
     foreach($userShops as $userShop){ 
      if(in_array($input, $userShop)){ 
       print_r('ok'); 
      } 
      else { 
       print_r('not'); or show validation error 
      } 
     } 
    } 
    exit; 
} 

ответ

1

Как о чем-то вроде этого:

function flatten(array $data) { 
    return array_map(function(array $element) { 
     return $element['id']; 
    }, $data); 
} 

$user = flatten($userInput['shops']); 
$shops = flatten($userShops); 

$isCovered = empty(array_diff($user, $shops)); 
+0

Спасибо, это помогло. Я просто сгладил второй массив, и я спросил в foreach, если значения из сообщения - in_array(), второй массив. array_diff показал некоторую странную ошибку :) – user2406735

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