PHP比较两个多维数组

时间:2016-12-25 17:24:57

标签: php arrays multidimensional-array

我有两个这样的多维数组: Guest允许数组

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数组,所有值都存在于第二个数组中,并且我必须检查guest虚拟机值小于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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);
});