[英]PHP recursive function output
使用以下代碼:
$array = array( 'id' => '1', 'parent_id' => '0', 'name' => 'top level', 'children' => array( 'id' => '2', 'parent_id' => '1', 'name' => 'second level', 'children' => array( 'id' => '3', 'parent_id' => '2', 'name' => 'third level' ) ) ); function generateFlatArray($array){ $output .= '[select id="' . $array['id'] . '" name="' . $array['name'] . '"]'; if(is_array($array['children'])){ generateFlatArray($array['children']); } return $output; } print_r(generateFlatArray($array));
為什么這樣輸出:
[select id="1" name="top level"]
而不是我期望的是:
[select id="1" name="top level"][select id="2" name="second level"][select id="3" name="third level"]
我討厭遞歸。 我討厭遞歸。 我討厭遞歸。 謝謝。
您沒有使用該函數的返回值,僅使用了第一個$output
。
function generateFlatArray($array){
$output .= '[select id="' . $array['id'] . '" name="' . $array['name'] . '"]';
if(is_array($array['children'])){
$output .= generateFlatArray($array['children']);
}
return $output;
}
因為您對遞歸步驟的返回值不做任何事情。
$output .= generateFlatArray($array['children']);
那就是我想要的。
因為您還必須在遞歸調用期間附加輸出:
if(is_array($array['children'])){
$output .= generateFlatArray($array['children']);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.