Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL Induk Anak Tabel Sama; PHP Nest Children Dalam Orang Tua sebagai Array Multidimensi

Referensi, dengan keuntungan bahwa urutan tidak menjadi masalah (node ​​anak dapat muncul sebelum simpul induknya):

 $tree = array('NULL' => array('children' => array()));
 foreach($array as $item){
    if(isset($tree[$item['id']])){
       $tree[$item['id']] = array_merge($tree[$item['id']],$item);
    } else {
       $tree[$item['id']] = $item;
    }

    $parentid = is_null($item['id_parent']) ? 'NULL' : $item['id_parent'];
    if(!isset($tree[$parentid])) $tree[$parentid] = array('children' => array());
    //this & is where the magic happens: any alteration to $tree[$item['id']
    //  will reflect in the item $tree[$parentid]['children'] as they are the same
    //  variable. For instance, adding a child to $tree[$item['id']]['children]
    //  will be seen in 
    //  $tree[$parentid]['children'][<whatever index $item['id'] has>]['children]
    $tree[$parentid]['children'][] = &$tree[$item['id']];
 }
 $result = $tree['NULL']['children'];
 //always unset references
 unset($tree);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih semua baris yang memiliki setidaknya daftar fitur

  2. Tidak dapat Menyimpan Bahasa Arab di database MYSQL menggunakan PHP

  3. Apa yang salah dengan prosedur tersimpan ini?

  4. Praktik terbaik untuk menyimpan bobot dalam database SQL?

  5. PHP PDO dan MySQLi