0

我有以下数组,名为 $usergrouppermissions:

Array
(
    [0] => Array
        (
            [UserGroupPermission] => Array
                (
                    [group_id] => 1
                    [permission_id] => 4
                )

        )

    [1] => Array
        (
            [UserGroupPermission] => Array
                (
                    [group_id] => 1
                    [permission_id] => 5
                )

        )

    [2] => Array
        (
            [UserGroupPermission] => Array
                (
                    [group_id] => 1
                    [permission_id] => 6
                )

        )

    [3] => Array


[...]

在一个循环中,我构建了另一个这样的数组,名为 $searchme:

Array
(
    [UserGroupPermission] => Array
        (
            [permission_id] => 1
            [group_id] => 1
        )

)

现在,我想检查上面的给定数组是否存在于顶部的数字索引数组中。我目前这样做:

$result = Set::contains($usergrouppermissions, $searchme);

结果总是错误的。我在这里有什么问题吗?问题是什么?

4

2 回答 2

0

由于 PH 4.2 in_array 也可以使用数组作为指针。所以,解决方案是这样的:

in_array($searchme, $usergrouppermissions)
于 2009-04-08T10:47:28.887 回答
0

我知道我的这个答案已经很晚了,但无论如何都是为了后代:)

蛋糕的方式是:

$exists = Set::matches
    (
        sprintf
        (
            '/UserGroupPermission[group_id=%s][permission_id=%s]',
            $searchme['UserGroupPermission']['group_id'],
            $searchme['UserGroupPermission']['permission_id']
        ),
        $usergrouppermissions
    );

如果您查看代码,Set::contains()您会发现它不适用于嵌套包含(至少在您的情况下不是)。

Set::matches()基本上只是Set::extract()使用给定的 XPath 条件进行调用,并将结果转换为 bool 值以供您取悦。

于 2009-04-13T15:16:26.253 回答