2016-12-25 147 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); 
});