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)
);

これは 2 番目の配列です。

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

ご覧のとおり、$possible_combinations[11]一致し$seekingます。

この場合の $seeking の値は 2、3、4 ですが、それ以外の場合は異なる場合があります。$possible_combinations 配列に対してチェックを実行して、$seeking 配列がその連想配列のいずれかの値と一致するかどうかを確認するにはどうすればよいですか。一致するキーがある場合は、そのキーを返す必要があります。

4

4 に答える 4

2

「その連想配列の値のいずれか」

質問に連想配列はありません。多次元配列です$possible_combinationsそれでも、 docsを使用できます:in_array

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 に答える