这是第一个数组:
$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数组是否匹配该关联数组的任何值。 它应该返回匹配的密钥(如果有的话)。
答案 0 :(得分:2)
“该关联数组的任何值”
您的问题中没有任何关联数组。 $possible_combinations
是一个多维数组。不过,您可以使用in_array
docs:
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';
}
答案 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