Задачи:Построить многомерный массив с помощью рекурсивной функции
Я пытаюсь построить рекурсивное дерево, используя функцию и данные из MySQL. Однако результаты не так ожидаемы.
PHP код:
function buildTree($root, $next = array())
{
// Sanitize input
$root = (int) $root;
// Do query
$query = "SELECT CID, Item, Parent FROM betyg_category WHERE Status = '1' AND Parent = '{$root}'";
$result = mysql_query($query) or die ('Database Error (' . mysql_errno() . ') ' . mysql_error());
// Loop results
while ($row = mysql_fetch_assoc($result))
{
$next[$row['CID']] = array (
'CID' => $row['CID'],
'Item' => $row['Item'],
'Parent' => $row['Parent'],
'Children' => buildTree($row['CID'], $next)
);
}
// Free mysql result resource
mysql_free_result($result);
// Return new array
return $next;
}
$testTree = buildTree(0);
echo "<xmp>".print_r($testTree, true)."</xmp>";
таблица в базе данных выглядит следующим образом:
Я хотел бы массив быть таким:
Array
(
[1] => Array
(
[CID] => 1
[Item] => Litteratur
[Parent] => 0
[Children] => Array
(
[2] => Integration av källorna
[3] => Belysning av egna resultat
[4] => Referenser
)
)
and so forth..
)
То есть для каждого родителя => произвести детей, затем перейти к следующему родителю и т. Д. Заранее благодарю за любой совет.
почему вы не предоставите ваши результаты получать, чтобы люди могли видеть то, что Вы в данный момент производите из кода – Lee
@Lee Я хотел бы но результаты просто продолжаются в течение всей вечности, и я должен нажать побег, чтобы браузер не разбился. Другими словами, список слишком длинный, и я чувствовал, что его не следует включать. – kexxcream
change buildTree ($ row ['CID'], $ next) to buildTree ($ row ['CID']) ... что происходит? – Lee