preg_split 字符串到多维数组 [英] preg_split string to multidimensional array
本文介绍了preg_split 字符串到多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好,我被卡住了,正在寻求帮助
Hello just looking for some help as I've gotten stuck
我有两个字符串:
C:\Users\Bob\My Documents
/Users/Bob/Documents
通过了
preg_split('/(?<=[\/\\\])(?![\/\\\])/', $string)
返回
Array
(
[0] => C:\
[1] => Users\
[2] => Bob\
[3] => My Documents
)
Array
(
[0] => /
[1] => Users/
[2] => Bob/
[3] => Documents
)
我需要
Array
(
[C:\] => Array
(
[Users] => Array
(
[Bob] => Array
(
[My Documents] => array()
)
)
)
)
Array
(
[/] => Array
(
[Users] => Array
(
[Bob] => Array
(
[Documents] => array()
)
)
)
)
并最终合并到
Array
(
[C:\] => Array
(
[Users] => Array
(
[Bob] => Array
(
[My Documents] => array()
)
)
)
[/] => Array
(
[Users] => Array
(
[Bob] => Array
(
[Documents] => array()
)
)
)
)
(正确合并,而不只是附加,所以如果另一个字符串以 C:\Users\Dan
开头,那么 dan 将出现在 ?3rd? 维度上.array_merge_recursive()
? )
(properly merged, not just appended, so if another string started with C:\Users\Dan
Then dan would appear on the ?3rd? Dimension. array_merge_recursive()
? )
推荐答案
只需使用 preg_split()
返回的数组并从中构建树结构即可:
Just take the arrays returned by preg_split()
and build your tree structure out of them:
$tree = array();
foreach ( $strings as $string ) {
$path = preg_split( '/(?<=[\/\\\])(?![\/\\\])/', $string );
$ptr =& $tree;
foreach ( $path as $elem ) {
if ( ! array_key_exists( $elem, $ptr ) )
$ptr[ $elem ] = array();
$ptr =& $ptr[ $elem ];
}
}
这篇关于preg_split 字符串到多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文