簡體   English   中英

PHP遞歸函數輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM