在 PHP 中获取多维数组中的第 n 个数组 [duplicate]

Get nth array in multidimensional array in PHP [duplicate]

提问人:stephan 提问时间:11/14/2023 更新时间:11/14/2023 访问量:64

问:

我有一个给定的路径,其中包含指向多维数组中的子数组的键(在单独的数组中)。

$path_array = array( 'first', 'new', 'best');
$multi_data = array(
  'first' => array(
    'example' => 'good',
    'other' => 'well',
    'new' => array(
      'subset' => 'none',
      'best' => 'stackoverflow',
    )
   )
);

当然,由于动态生成的数据,数组正在发生变化。

我的问题:如何通过我得到的路径获得正确的值或数组? 正确的静态方法是:

echo $multi_data['first']['new']['best'];
// prints: stackoverflow

我在 $path_array 上尝试了 foreach-Loop,但我无法将路径元素放在一起(键是方括号)。

php 维数组 元素

评论

0赞 Adi 11/14/2023
任何密钥上都会有重复项吗?如果是这样,那是什么情况。另外,您只是想从中返回特定的路径数组吗?是恒定的还是也会改变?订单是否符合您需要搜索的顺序?$multi_data$path_array$path_array
0赞 stephan 11/14/2023
中的值代表每个缩进级别。在每个缩进上,每个键都是唯一的。但是,不同压痕上可能会出现重复。 也会改变,因为它是动态生成的。$path_array$path_array
0赞 Adi 11/14/2023
所以大小也是固定的,不是固定的吧?只是一个想法,在数组中有一个路径可能不是最有效的方法,你应该使用链表。$path_arrayn

答:

-1赞 Arthur Boucher 11/14/2023 #1

编辑:不知道为什么我在转移值时会遇到所有这些麻烦,foreach 工作得很好

可以做这样的事情:

$result = $multi_data;
foreach($path_array as $key){
    $result = $result[$key];
}
echo $result;

这个想法是在每次迭代时更深入地研究数组。但是,如果您可能有一些不存在的密钥,请格外小心。

评论

0赞 stephan 11/14/2023
刚刚意识到我用这种方式来读取元素。直接写给它怎么样:$a['first']['new']['best'] = 'stackexchange';
0赞 mickmackusa 11/14/2023
@Arthur 请从此页面中删除您的建议,并将其转移到规范(或至少是之前提出的问题)
0赞 mickmackusa 11/14/2023
@stephan规范演示了使用键路径的读取和写入。