数组作为文件夹

时间:2011-09-09 16:40:01

标签: php arrays directory

我做了这个代码:
的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”......)

我该怎么做?

1 个答案:

答案 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"(我还要说使用递归函数,但你说数组可能非常大,所以它可能会损害性能)。