0

配列 1:

array(1) {
  ["en"]=>
  array(1) {
    ["em"]=> null
  }
}

配列 2 の値:

array(15) {
  ["something"]=>
  array(4) {
    ["somekey1"]=>
    string(25) "value1"
    ["somekey2"]=>
    string(9) "value2"
    ["somekey3"]=>
    string(5) "value3"
    ["somekey4"]=>
    string(3) "value4"
  }
  ["en"]=>
  array(3) {
    ["em"]=>
    string(4) "RESULT"

["en"]["em"] = "RESULT"両方の配列から上の配列を見てください。

$array1と を使用し$array2て配列のキーを交差させ、から結果を取得したい$array2:

注:Array1よりネストされた配列にすることができます。ARRAY1はARRAY2でこのキーを見つける必要があります。

$array2["en"]["em"]注:カスタム関数のみを使用して、のようなデータを取得したくありません。(例: カスタムarray_intersect())

私は2つの配列を持っています。キーだけを見てください。Array1 にはen,emキーがあります。これら 2 つのキーが Array2 で交差するようにします。が Array2 と交差すると、Array2 で値が取得されますen,em->RESULT。データを取得するための従来の方法は必要ありません。COMPARE TWO ARRAYS と GET A VALUE だけです。

交差させてみましたが、これは 2 つの配列が同じ場合にのみ機能します。したがって、キーによるネストされた再帰検索を使用して交差する必要があります!

例、私はしたくない:

$array2['en']['em'];

some_function_to_search_array_by_key(array $array2);

例、私がしたいこと:

Using function `array_intersect()` or some hardcoded sample.

get_result_by_two_arrays($array1, $array2);

結果の例:

INPUT:

// search by arrays keys
$array1 = array('en' => 'em');

$result = get_result_by_two_arrays($array1, $array2);

RESULT:

$result = 
(string)RESULT;
4

1 に答える 1

1

これがあなたが望むと思うものの簡単な例です:

$array1 = ['en' => ['em' => null]];
$array2 = ['en' => ['em' => 'RESULT'], 'something' => ['somekey1' => 'somevalue1', 'somekey2' => 'somevalue2']];

function get_result_by_two_arrays(array $array1, array $array2) {
    if (!$array1) return;
    do {
        $key = current(array_keys($array1));
        $array1 = current($array1);
        if (!isset($array2[$key])) return;
        $array2 = $array2[$key];
    } while (is_array($array1));
    return $array2;
}

var_dump( get_result_by_two_arrays($array1, $array2) );
# string(6) "RESULT"
于 2013-08-30T16:01:10.420 に答える