我做了这个代码:
的index.php:
$series = array(
"a" => array(
"b" => array(
"FOLD", "more_arrays.php"
),
"b2" => array(
)
)
);
function pre($a) { print "<pre>"; print_r($a); print "</pre>"; }
$string = "a,,,b";
$all_directions = explode(",,,", $string);
$all_directions = array_map("trim", $all_directions);
$b = ""; $g = 0;
foreach($all_directions as $v)
{
$b .= "['".str_replace(array("[", "]", "'", "\""), null, $v)."']";
$g++;
}
@eval('$where = $series'.$b.';');
if(isset($where[0]) && $where[0] == "FOLD")
{
// a[series], b[series], c[new_array]
require_once("./more_folders/".$where[1]);
print $g;
}
for($i = 0; $i <= sizeof($where); $i++)
{
}
pre($where);
more_array.php:
$series_in = array(
"c" => array(
"d" => array(
"bla" => array(),
"hey" => array(),
"ha" => array()
),
"d2" => array(
)
),
"c2" => array(
)
)
在$ string我定义了我想看的“文件夹”,例如,如果我写$string = "a";
,它将显示“a”中的所有数组。
key =文件夹的名称,value =文件夹中的子文件夹和那些数组。
现在:因为它将是一个巨大的数组,我想将它分离到许多数组。
如果你看到代码,$series[a][b]
直接导致另一个数组。
现在如果我做$string = "a,,,b";
我想看:“c”和“c2”
如果我$string = "a,,,b,,,c";
我想看到:“d”,“d2”
如果我做$string = "a,,,b,,,c,,,d";
我想看到所有内部d(“bla”,“嘿”,“ha”......)
我该怎么做?
答案 0 :(得分:0)
我会咬......
你似乎有大部分的部分。基本上你需要把它们放在一起。
您已$string
和$series
。然后将$string
拆分为$all_directions
。循环至$all_directions
,每次潜入阵列$series = $series[$all_directions[$i]];
当您完成最后一次$all_directions
返回时$series
(但请注意$series
耗尽,如果你确定这是一个错误,则返回null或false。
唯一的另一件事是任何时候$series[$all_directions[$i]]
是特殊的“FOLD”条目然后首先加载文件并在运行中分配它像
include ...;
$series[$all_directions[$i]] = $series_in;
您不希望也不需要eval()
并且使用for
更好地循环,因为您需要检查密钥中的"FOLD"
(我还要说使用递归函数,但你说数组可能非常大,所以它可能会损害性能)。