2016-12-25 146 views
0

我有兩個多維數組是這樣的: 客戶允許陣列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); 
});