查找匹配的数组并使用 PHP 返回密钥


find matching array and return the key using php

我有一个这样的数组:

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]。

array_search将这样做,利用在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";
}

由于它是完全匹配的,因此您可以使用array_search:

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