Tôi thấy mã này để nhóm các mảng con mẹ thật tuyệt vời. Tôi đã thử nghiệm ở 4 độ sâu mà không có vấn đề gì. Tuy nhiên, nó không phải là một hàm đệ quy.
$tree = null;
foreach($results as $result)
{
$thisref = &$refs->{$result['id']};
foreach($result as $k => $v)
{
$thisref->{$k} = $v;
}
if ($result['parentId'] == 0) {
$tree->{$result['id']} = &$thisref;
} else {
$refs->{$result['parentId']}->children->{$result['id']} = &$thisref;
}
}
$tree; // contains the newly sorted tree.
Bạn có thể phải thực hiện một số sửa đổi để nó hoạt động hoàn toàn với tình huống của bạn. Nhưng về cơ bản, nó lặp lại tất cả các kết quả và kết hợp chúng lại bằng cách tham khảo.
Lưu ý rằng phần cuối $tree
kiểu dữ liệu là một object
và không phải là một array
Chúc may mắn
CẬP NHẬT
Bạn có thể tạo mảng như vậy
$query = "SELECT * FROM pB_test ORDER BY parentId ASC";
$dbresult = mysql_query($query) or die ('Database Error (' . mysql_errno() . ') ' . mysql_error());
$results = array();
while($row=mysql_fetch_assoc($dbresult))
{
$results[]=$row
}