php检查来自一个二维数组的所有值是否都在另一个二维数组中

时间:2014-01-19 20:43:03

标签: php arrays

我有一个像这样的二维二维阵列。它们是动态创建的,因此它们可以包含不同数量的数组。

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

和另一个看起来像这样:

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

第一个阵列是我从选定商店的帖子,ids收到的东西。第二个数组显示用户拥有的所有商店ID。如何测试userInput中的所有值是否都可以在数组userShops中找到?我使用它进行验证,所以我需要查看post中的所有值是否与用户的实际值匹配。

我试图这样做,但我收到了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 个答案:

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