拆分这些相对链接的最佳解决方案是什么
folder-1/folder-2/item-a.txt
folder-1/folder-2/item-b.txt
folder-1/folder-3/item-c.txt
folder-1/folder-3/item-a.txt
folder-1/item-f.txt
folder-1/folder-2
folder-1/folder-3
folder-1
item-b.txt
item-g.txt转换成php数组?
$testArray = array(
"folder-1/" => array(
"folder-2" => array(
"item-a.txt",
"item-b.txt"
),
"folder-3" => array(
"item-a.txt",
"item-c.txt"
),
"item-f.txt"
),
"item-b.txt",
"item-g.txt",
);发布于 2014-06-16 08:19:31
给定最深路径的深度d和最坏情况下的路径数O (nk),假设查找是常量的(PHP中就是这种情况):
$root = array();
foreach ($I as $i) {
$d =& $root;
$P = explode("/", $i);
foreach ($P as $p) {
if (!array_key_exists($p, $d))
$d[$p] = array();
$d =& $d[$p];
}
}您可以通过对输入进行预处理来进一步优化这一点,方法是确保父目录出现在任何子目录之前。
然后,您可以确定必须添加下一个条目(因此array_key_exists-condition是多余的)。然后你只需要一种聪明的方法来知道在$r中把你的“光标”放在哪里。这段代码可能会更复杂一些。
此外,我也不能完全确定在哪一点上,预处理和通过$r导航的成本会提高一般的时间复杂度。
https://stackoverflow.com/questions/24234909
复制相似问题