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);

結果は常に false です。ここで何か間違っていますか?何が問題ですか?

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()見ると、ネストされたcontainsではうまく機能しないことがわかります(少なくともあなたの場合はそうではありません).

Set::matches()基本的にSet::extract()、指定された XPath 条件で呼び出し、結果を bool 値に変換するだけです。

于 2009-04-13T15:16:26.253 に答える