找到匹配的数组并使用php返回密钥

时间:2012-06-28 10:36:24

标签: php arrays matching

我有一个这样的数组:

Array
(
    [2] => Array
        (
            [0] => name2 surname
            [1] => email2@email.com
            [2] => 834502034
            [3] => image url3
        )

    [3] => Array
        (
            [0] => name3 surname
            [1] => email2@email.com
            [2] => 7648484886
            [3] => image url3
        )

    [0] => Array
        (
            [0] => name0 surname
            [1] => email0@email.com
            [2] => 56783658658
            [3] => image url0
        )

    [1] => Array
        (
            [0] => name1 surname
            [1] => email1@email.com
            [2] => 7648484886
            [3] => image url1
        )

)

您会注意到某些值是相同的,并且可能只有一个值的差异。

我需要找出另一个单个数组是否与子数组中的任何一个匹配并返回密钥。

我要匹配的数组不是多维的:

Array
            (
                [0] => name1 surname
                [1] => email1@email.com
                [2] => 7648484886
                [3] => image url1
            )

如何确定我的单个数组是否在主数组中找到并返回KEY? 我尝试使用array_diff_uassoc和一个返回非匹配键=>的回调。数组,我想我可以匹配两个结果的计数,看看是否有差异,但我仍然需要匹配数组的键。我正在比较的数组将始终具有精确值[0],[1],[2]和[3]。

2 个答案:

答案 0 :(得分:0)

array_search会利用how comparing arrays for equality works in PHP(这意味着您提供的每个子数组中的项目顺序作为搜索目标)必须是一样的!):

$master = array(
    array('surname', 'foo'),
    array('surname', 'bar'),
);

$key = array_search(array('surname', 'baz'), $master));

if ($key === false) {
    echo "not found";
}
else {
    echo "found, key is $key";
}

答案 1 :(得分:0)

由于它完全匹配,因此可以使用array_search

$key = array_search($array_to_find, $array_to_search_in);