2

这是第一个数组:

$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]match $seeking

在这种情况下 $seeking 的值是 2, 3, 4 但在其他时候可能不同。如何检查 $possible_combinations 数组以查看 $seeking 数组是否匹配该关联数组的任何值。如果有的话,它应该返回匹配的键。

4

4 回答 4

2

“该关联数组的任何值”

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

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

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

于 2012-05-12T06:49:14.523 回答
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

于 2012-05-12T06:47:58.333 回答
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";
}
于 2012-05-12T06:49:28.393 回答
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
于 2012-05-12T07:14:34.360 回答