PHP (MySQL Tablo itibaren) düz bir veri kümesi bir çok boyutlu nesne oluşturma

0 Cevap php

Burada mysql tabloda veri kümesi bulunuyor:

Ben lft ve rgt sütunlarını yapmamışlar çünkü MySQL iç içe Set modeli kullanılarak, bu belli değil.

+------+----------+--------------------------------+-------+
+ Id   | ParentId | Name                           | Level |
+------+----------+--------------------------------+-------+
| 1001 |     NULL | Computing                      |     0 |
| 1002 |     NULL | Cassettes & Vinyl              |     0 |
| 1003 |     1001 | CD Players                     |     1 |
| 1004 |     1002 | CD Writers                     |     1 |
| 1005 |     1003 | CD-ROM Drives                  |     2 |
| 1006 |     1004 | CDs                            |     2 |
+------+----------+--------------------------------+-------+

Bu 2 boyutlu bir dizi içine çekilir:

<?php
$data = array(
          array('id' => 1001, 'ParentId' => NULL, 'Name' => 'Computing', 'Level' => 0),
          array('id' => 1002, 'ParentId' => NULL, 'Name' => 'Cassettes & Vinyl', 'Level' => 0),
          array('id' => 1003, 'ParentId' => 1001, 'Name' => 'CD Players', 'Level' => 1),
          array('id' => 1004, 'ParentId' => 1002, 'Name' => 'CD Writers', 'Level' => 1),
          array('id' => 1005, 'ParentId' => 1003, 'Name' => 'CD-ROM Drives', 'Level' => 2),
          array('id' => 1006, 'ParentId' => 1004, 'Name' => 'Computing', 'Level' => 3)
        );
?>

Ben aşağıdaki çok boyutlu nesneyi elde etmek çalışıyorum:

stdClass Object {
    [0] => stdClass Object {
        [id] => 1001
        [name] => Computing
        [parentId] => NULL
        [level] => 0
        [children] => stdClass Object {
            [0] => stdClass Object {
                [id] => 1003
                [name] => CD Players
                [parentId] => 1001
                [level] => 1
                [children] => stdClass Object {
                    [0] => stdClass Object {
                        [id] => 1005
                        [name] => CD Rom Drives
                        [parentId] => 1003
                        [level] => 2
                    }
                }
            }
        }
    }
    [1] => stdClass Object {
        [id] => 1002
        [name] => Cassettes & Vinyl
        [parentId] => NULL
        [level] => 0
        [children] => stdClass Object {
            [0] => stdClass Object {
                [id] => 1004
                [name] => CD Writers
                [parentId] => 1002
                [level] => 1
                [children] => stdClass Object {
                    [0] => stdClass Object {
                        [id] => 1006
                        [name] => CDs
                        [parentId] => 1004
                        [level] => 2
                    }
                }
            }
        }
    }
}

Ben biraz şans ile bir özyinelemeli fonksiyonu ile oynarken edilmiştir.

Neden? - Bu nesne Zend_Navigation için oluşturmak için kullanılacaktır. Ben taksonomi yönetim veritabanında yapılacak tercih, bu aşamada bir XML dosyası kullanmak istemiyorum.

Herhangi bir fikir?

0 Cevap