我试图创建一个拖放(使用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();
但只显示原始的合并数组,而不是函数。任何人都可以给我一个正确的方向吗?
答案 0 :(得分:0)
可能是因为array_merge什么都不做,但这实际上取决于你的输入数据。让我们在你的例子中进行foreach的第一次迭代,传递给eval()的字符串是:
$array = array_merge( $array, Array);
这是因为$branch
是一个数组,而一个字符串的数组是“Array”。
但是,这应该会在eval'd代码中显示“语法错误”,因为“array”是一个保留字,必须后跟“(”。
你真的应该摆脱 eval() -solution。发布您想要的结果,我们将帮助您找到合适的解决方案。