php - 处理拖放导航结构

时间:2011-10-12 21:15:26

标签: php navigation parent

我试图创建一个拖放(使用jquery UI)导航结构。我想我已经完成了jquery方面,它找到了所有没有子节点的“页面”,然后向后工作以创建一个brach,然后所有分支都转到服务器。

让我们说(在小规模上进行测试)我在合并分支后得到以下数组:

Array
(
    [post-id-2] => Array
        (
            [post-id-5] => 
        )

    [post-id-3] => Array
        (
            [post-id-4] => post-id-1
        )

)

所以我现在想要更新我的导航表以使用page_parentid设置正确的pageid,所以我尝试了以下但是无处可去:

$array = array();
$query_str = '';

foreach( $_POST['branch'] as $branch ) {
    eval('$array = array_merge( $array, ' . $branch . ');');        
}

function recrusive_parent_child( $parent, $array ) {
    $str = $parent;
    if( is_array( $array ) ) {
        foreach( $array as $parent => $branch ) {
            $str .= recrusive_parent_child( $parent, $branch );
        }
    }else{
        return $str;
    }
}

foreach( $array as $parent => $branch ) {
    echo recrusive_parent_child( $parent, $branch );
}

print_r($array);
die();

但只显示原始的合并数组,而不是函数。任何人都可以给我一个正确的方向吗?

1 个答案:

答案 0 :(得分:0)

可能是因为array_merge什么都不做,但这实际上取决于你的输入数据。让我们在你的例子中进行foreach的第一次迭代,传递给eval()的字符串是:

$array = array_merge( $array, Array);

这是因为$branch是一个数组,而一个字符串的数组是“Array”。

但是,这应该会在eval'd代码中显示“语法错误”,因为“array”是一个保留字,必须后跟“(”。

你真的应该摆脱 eval() -solution。发布您想要的结果,我们将帮助您找到合适的解决方案。