2013-07-25 20 views
0

我有一個保存在MySQL中的多維菜單。表看起來像:從一個mysql_query打印麪包屑遞歸

id name parent_id 

表是巨大的。我不想運行成百上千的mysql_query的(),所以我開始使用此:

$result = mysql_query("SELECT * FROM test"); 
$arrs = array(); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $arrs[] = $row; 
} 

function build_tree($arrs, $parent_id=0, $level=0) { 
    foreach ($arrs as $arr) { 
     if ($arr['parent_id'] == $parent_id) { 
      echo str_repeat("-", $level)." ".$arr['name']."<br />"; 
      build_tree($arrs, $arr['id'], $level+1); 
     } 
    } 
} 

build_tree($arrs); 

這一切正常,但我怎麼修改這打印所有parent_ids每個崗位?幾乎像麪包屑。

+0

這是遺留應用程序嗎?你不應該在新的應用程序中使用'mysql_query'。 – tadman

+0

* PSA:*本'mysql_ *'功能已廢棄在PHP 5.5](http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated)。不建議您編寫新的代碼,因爲這會阻止您將來升級。相反,請使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)和[是一個更好的PHP開發人員](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 –

+0

是的,這是一箇舊項目的更新。我通常爲新項目使用codeigniter框架,但感謝您的警告。 – johdah

回答

0

除了只傳入一個parent_id,您可以傳遞一個parent_id數組。您可以在遞歸調用之前將當前的parent_id追加到此數組中,並在遞歸調用後將其刪除。