如何在PHP中比较2个数组?

时间:2012-05-12 06:43:33

标签: php

这是第一个数组:

$possible_combinations = array(
    1 => array(1),
    2 => array(2),
    3 => array(3),
    4 => array(4),

    5 => array(1, 2),
    6 => array(1, 3),
    7 => array(1, 4),       

    8 => array(2, 3),
    9 => array(2, 4),       

    10 => array(3, 4),

    11 => array(2, 3, 4),
    12 => array(1, 3, 4),
    13 => array(1, 2, 4),
    14 => array(1, 2, 3),

    15 => array(1, 2, 3, 4)
);

这是第二个数组:

$seeking = array(2, 3, 4);

您可以看到$possible_combinations[11]匹配$seeking

在这种情况下,$ seek的值是2,3,4,但在其他时候可能会有所不同。我如何对照进行检查 $ possible_combinations数组,以查看$ seeking数组是否匹配该关联数组的任何值。 它应该返回匹配的密钥(如果有的话)。

4 个答案:

答案 0 :(得分:2)

  

“该关联数组的任何值”

您的问题中没有任何关联数组。 $possible_combinations是一个多维数组。不过,您可以使用in_arraydocs

var_dump(in_array(array(2, 3, 4), $possible_combinations)); // true

如果您需要知道在大海捞针中找到针的索引,请使用其他答案中提到的array_search。哦,还要注意array_search可以返回零,因此在检查结果时应该验证它是否为返回值!== FALSE

答案 1 :(得分:1)

您可以使用PHP的内置array_search()功能。

$search = array_search($seeking,$possible_combinations);

if ($search !== FALSE) {
    echo 'Found at ' . $search;
} else {
    echo 'Not Found';
}

http://www.php.net/manual/en/function.array-search.php

答案 2 :(得分:1)

我想说,使用array_search

var_dump(array_search($seeking, $possible_combinations, true));

如果找到则返回密钥,否则返回FALSE。因此,请务必使用===进行比较,即

if (false !== ($key = array_search($seeking, $possible_combinations, true))) {
    echo "Found here: $key";
}

答案 3 :(得分:0)

array_keys()查找所有可能的主要匹配项。 array_search()将首先返回。

var_dump(array_keys($possible_combinations, $seeking, true));

将同时匹配0& 11假设

$possible_combinations = array(
     0 => array(2, 3, 4),
    ...
    11 => array(2, 3, 4),
);

$seeking = array(2, 3, 4);

输出:

array
  0 => int 0
  1 => int 11