【问题标题】:Get a value from a key of two arrays从两个数组的键中获取一个值
【发布时间】:2013-08-31 00:01:10
【问题描述】:

阵列 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 键。我希望这两个键在 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;

【问题讨论】:

  • 那么到目前为止你都尝试过什么
  • 我尝试使用array_intersect()array2 获取数据,但这是字符串问题。我想使用比较键从array2 获取数据并从array2 获取一个值。
  • 您希望结果是什么样的?
  • Brate, kad bi mi tebe razumeli šta ti hoćeš ;) 就像@RocketHazmat 所说,输出示例会很好。
  • 我已经编辑了问题。

标签: php arrays


【解决方案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"

【讨论】:

  • 你太棒了!谢谢!作品!它作为一个完整的阵列和一个阵列工作!很棒的片段!
  • 我认为这很有用sn-p!谢谢。
猜你喜欢
  • 2018-06-18
  • 1970-01-01
  • 2014-10-03
  • 2017-07-21
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多