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

注意: OnArray1可以是更多嵌套数组,ARRAY1应该在ARRAY2上找到这个键:

注意:我不想抓取类似的数据$array2["en"]["em"],只使用自定义函数。(例如:自定义array_intersect()

我有 2 个数组。只看钥匙。在 Array1 上有en,em键。我希望这两个键在 Array2 上相交。与 Array2 相交时,会在 Array2 上得到一个值en,em->RESULT。我不想要一种经典的方式来获取数据,只是比较两个数组并获取一个值。

我试过相交,但这只有在两个数组相同的情况下才有效。所以,我需要使用嵌套递归搜索键相交!

例如,我不想要:

$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 回答