Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL Родител Дете Същата таблица; PHP Nest деца в родители като многоизмерен масив

Препратки, с предимствата, че редът няма значение (детски възли могат да идват преди техните родителски възли):

 $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. MYSQL:Разлика между двоичен и Blob

  2. Грешка-Опит от метода 'X.set_DbConnection(System.Data.Common.DbConnection)' за достъп до метода 'Y.get_Settings()' е неуспешен

  3. MySQL таблиците имат ли нужда от ID?

  4. нормализиране на акцентирани знаци в MySQL заявки

  5. Как да създадете MySQL инсталация за локално тестване