我正在编写一个递归函数来构造一个多维数组。基本上,问题如下:
function build($term){
$children = array();
foreach ( $term->children() as $child ) {
$children[] = build($child);
}
if(!count($children)){
return $term->text();
} else {
return $term->text() => $children; //obviously, this doesn't work
}
}
思考?我知道我可以重写函数的结构以使其工作,但似乎这应该是不必要的。
答案 0 :(得分:2)
function build($term){
$children = array();
foreach ( $term->children() as $child ) {
$children += build($child);
}
if(!count($children)){
return $term->text();
} else {
return array($term->text() => $children); //obviously, this doesn't work
}
}
根据我对这个问题的理解,这应该是什么样的。
附加递归并返回一个数组。
编辑:顺便说一句,即使count($ children)== 0,你最好还是返回一个数组,这样你的所有类型都会内联。否则你可能会遇到各种各样的错误:
if(!count($children)){
return array($term->text() => null);
答案 1 :(得分:0)
你可以这样返回:
return array($term->text() => $children);
虽然这不是你问的。我认为如果不以某种方式重写函数的某些部分,你就无法做到这一点。
答案 2 :(得分:0)
数组是PHP必须提供的唯一键值对容器。所以你必须使用一个数组,如果你想要你的函数(可能是递归或非递归)返回一个键值对。
return array($term->text() => $children);