2016-12-25 5 views
0

У меня есть два многомерные массивы, как это: Guest позволяют массивPHP Сравнить два многомерные массивы

Array 
(
    [0] => 5 
    [1] => 2 
    [2] => 3 
) 

и второй один как этот

Array 
(
    [0] => Array 
     (
      [property_id] => 6 
      [guest_allow] => 2 
     ) 

    [1] => Array 
     (
      [property_id] => 9 
      [guest_allow] => 3 
     ) 

    [2] => Array 
     (
      [property_id] => 62 
      [guest_allow] => 2 
     ) 

    [3] => Array 
     (
      [property_id] => 72 
      [guest_allow] => 3 
     ) 

    [4] => Array 
     (
      [property_id] => 76 
      [guest_allow] => 4 
     ) 

    [5] => Array 
     (
      [property_id] => 80 
      [guest_allow] => 5 
     ) 

    [6] => Array 
     (
      [property_id] => 84 
      [guest_allow] => 3 
     ) 
) 

Так что я должен соответствовать массив гостевую все значения присутствуют во втором массиве, а также я должен проверять значения гостя меньше, чем на второй массив guest_allow. Если нет единственного значения, возвращаемого пустым массивом. Если значение соответствия так возвращает только совпадающее значение. Я хочу вернуть массив следующим образом:

 Array 
(
    [0] => Array 
     (
      [property_id] => 6 
      [guest_allow] => 2 
     ) 

    [1] => Array 
     (
      [property_id] => 9 
      [guest_allow] => 3 
     ) 

    [2] => Array 
     (
      [property_id] => 62 
      [guest_allow] => 2 
     ) 

    [3] => Array 
     (
      [property_id] => 72 
      [guest_allow] => 3 
     ) 

    [4] => Array 
     (
      [property_id] => 84 
      [guest_allow] => 3 
     ) 
    [5] => Array 
     (
      [property_id] => 76 
      [guest_allow] => 4 
     ) 
) 

Возможно ли возвращение этого типа массива? Благодарю.

ответ

2

$guestArr Предполагая, что ваш массив гость и $secondArr Ваш второй массив, решение будет выглядеть так:

foreach($secondArr as $key => $arr){ 
    if(!in_array($arr['guest_allow'], $guestArr)){ 
     unset($secondArr[$key]); 
    } 
} 

// display $secondArr array 
var_dump($secondArr); 

Вот live demo.

+0

Большое вам спасибо –

+0

Могу ли я сравнивать больше или равно? –

+0

@dhanashri Каким образом вы хотите использовать * больше или равно * здесь? –

0
$first = [1, 2, 3]; 
$second = [ 
    ['property_id' => 6, 'guest_allow' => 2], 
    ['property_id' => 66, 'guest_allow' => 3], 
    ['property_id' => 76, 'guest_allow' => 4], 
    ['property_id' => 86, 'guest_allow' => 2] 
]; 

$result = array_filter($second, function($el) use ($first) { 
    return in_array($el['guest_allow'], $first); 
});