gpt4 book ai didi

php - 获取嵌套关联数组中所有元素的路径和值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:18 24 4
gpt4 key购买 nike

考虑一个任意形式和嵌套深度的关联数组,例如:

$someVar = array(
'name' => 'Dotan',
'age' => 35,
'children' => array(
0 => array(
'name' => 'Meirav',
'age' => 6,
),
1 => array(
'name' => 'Maayan',
'age' => 4,
)
),
'dogs' => array('Gili', 'Gipsy')
);

我想将其转换为路径和值的关联数组:

$someVar = array(
'name' => 'Dotan',
'age' => 35,
'children/0/name' => 'Meirav',
'children/0/age' => 6,
'children/1/name' => 'Maayan',
'children/1/age' => 4,
'dogs/0' => 'Gili',
'dogs/1' => 'Gipsy'
);

我开始编写一个递归函数,该函数对于数组元素将递归,对于非数组元素(整数、 float 、 bool 值和字符串)返回数组 $return['path']$return['值']。这很快就变得草率了! 在 PHP 中有没有更好的方法来做到这一点?我假设可调用对象和对象不会在数组中传递,尽管处理这种可能性的任何解决方案都是最好的。此外,我假设输入数组的元素名称中没有 / 字符,但考虑到这一点可能是谨慎的! 请注意,输入数组的嵌套深度可以达到 8 层或更多层!

最佳答案

递归确实是您能够处理此问题的唯一方法,但这里有一个简单的版本:

function nested_values($array, $path=""){
$output = array();
foreach($array as $key => $value) {
if(is_array($value)) {
$output = array_merge($output, nested_values($value, (!empty($path)) ? $path.$key."/" : $key."/"));
}
else $output[$path.$key] = $value;
}
return $output;
}

关于php - 获取嵌套关联数组中所有元素的路径和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com