[英]Converting a PHP array of key value pairs to a hierarchical nested tree structure
[英]convert nested structure to flat key value pairs
我的嵌套结构与文件夹结构非常相似,例如:
Array
(
[level_one_1] => Array
(
[level_two_1] => value1
[level_two_2] => valuetwo
[level_two_3] => value_three
)
[level_one_2] => Array
(
[level_two_4] => value1
[level_two_5] => valuetwo
[level_two_6] => value_three
)
[level_one_3] => Array
(
[level_two_2] => valuetwo
[level_two_3] => value_three
)
)
是否可以将其隐藏为类似以下内容的快速方法:
Array
(
[level_one_1/level_two_1] => value1
[level_one_1/level_two_2] => valuetwo
[level_one_1/level_two_3] => value_three
[level_one_2/level_two_4] => value1
[level_one_2/level_two_5] => valuetwo
[level_one_2/level_two_6] => value_three)
[level_one_3/level_two_2] => valuetwo
[level_one_3/level_two_3] => value_three
)
级别之间的斜线将是分隔符-它可以是任何东西。 同样,它是动态的级别数。
通过使用预定义的array *函数可以做到这一点吗? 与递归?
这样的事情。 未经测试,但可以帮助您朝正确的方向入门:
$myArray = array(
'level_one_1' => array(
'level_two_1' => 'value1',
'level_two_2' => 'valuetwo',
'level_two_3' => 'value_three'
),
'level_one_2' => array(
'level_two_4' => 'value1',
'level_two_5' => 'valuetwo',
'level_two_6' => 'value_three'
),
'level_one_3' => array(
'level_two_2' => 'valuetwo',
'level_two_3' => 'value_three'
));
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));
$result = array();
foreach ($ritit as $leafValue) {
$keys = array();
foreach (range(0, $ritit->getDepth()) as $depth) {
$keys[] = $ritit->getSubIterator($depth)->key();
}
$result[ join('/', $keys) ] = $leafValue;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.