Php 如何映射数组深度?

Php 如何映射数组深度?,php,arrays,Php,Arrays,我不知道该怎么称呼它,我也找不到我要找的东西,因为我一定是在找错误的关键字,所以即使是正确的搜索词也能帮到我: 我有一个$map数组和一个$data数组。$data数组是基于解析的xml的动态数组。简化示例: $data = array('a' => array(0=> array('hello'=>'I want this data'))); $map = array('something' => 'a.0.hello'); 现在,我想通过使用$map['somet

我不知道该怎么称呼它,我也找不到我要找的东西,因为我一定是在找错误的关键字,所以即使是正确的搜索词也能帮到我:

我有一个$map数组和一个$data数组。$data数组是基于解析的xml的动态数组。简化示例:

$data = array('a' => array(0=> array('hello'=>'I want this data')));

$map = array('something' => 'a.0.hello');

现在,我想通过使用
$map['something']
在那里导航,将
$test
设置为
$data['a']['0']['hello']
的值。这背后的想法是创建一个映射数组,这样,如果要更改xml格式,就不需要更改代码,只需更改映射数组即可。非常感谢您在这方面提供的任何帮助:)

在PHP(或者我能想到的任何其他语言)中,没有一种真正的好方法以编程方式访问数组中的嵌套键

如果您想使用这串键,只需使用

getDeepValue($arr, explode('.', 'a.0.hello'))

如果这是您必须执行的常见操作,您可以添加另一个抽象层,它接受基于字符串的深度值查找。

您是否正在搜索
某物的值来导航
我想要这些数据
您能更具体地说明您到底需要什么吗?你想要指向字符串的东西吗?可能会生成一个函数,分解字符串并将其元素用作其他数组的索引?!如果要更改xml格式,则不需要更改代码,只有映射数组—我理解它so@FrayneKonok也许,很难编写这样的代码:)我想OP想要从数据数组创建map数组。Splash做对了,结果证明我想的方法很复杂!在那里阅读,并询问你是否还有问题
function getDeepValue(&$arr, $keys) {
  if (count($keys) === 0)
    return $arr;
  else
    return getDeepValue($arr[$keys[0]], array_slice($keys, 1));
}

$data = ['a' => [0=> ['hello'=>'I want this data']]];
$map = ['something' => getDeepValue($data, ['a', '0', 'hello'])];

var_dump($map);

// array(1) {
//   ["something"]=>
//   string(16) "I want this data"
// }
getDeepValue($arr, explode('.', 'a.0.hello'))