Teknologi klasifikasi yang dibangunkan dalam PHP menggunakan gelung foreach untuk melaksanakan fungsi klasifikasi

Apakah klasifikasi? Sama seperti mencipta folder baharu di bawah Windows, anda boleh mencipta folder

baharu di bawah folder baharu Ini akan diteruskan dalam gelung tak terhingga Perkara yang sama berlaku untuk klasifikasi. dan subkategori boleh menjadi

🎜>

boleh dibahagikan kepada subkategorinya. . . . . .

Jadi bagaimanakah PHP melaksanakan klasifikasinya? Bagaimana untuk menyenaraikan pelbagai kategorinya satu persatu?

Dalam bab ini kita akan memperkenalkan penggunaan gelung foreach untuk melaksanakan fungsi pengelasan.

Mula-mula bina tatasusunan klasifikasi:

<?php
$categories = array(
  array('id'=>1,'name'=>'电脑','pid'=>0),
  array('id'=>2,'name'=>'手机','pid'=>0),
  array('id'=>3,'name'=>'笔记本','pid'=>1),
  array('id'=>4,'name'=>'台式机','pid'=>1),
  array('id'=>5,'name'=>'智能机','pid'=>2),
  array('id'=>6,'name'=>'功能机','pid'=>2),
  array('id'=>7,'name'=>'超级本','pid'=>3),
  array('id'=>8,'name'=>'游戏本','pid'=>3),
);
?>

Terdapat 3 medan di sini, id pengisihan, nama nama klasifikasi dan pid pengelasan


Matlamatnya adalah untuk menukarnya kepada yang berikut Struktur:

QQ图片20161102150838.png

<?php
array(
      //1对应$categories中的id ,方便直接读取
      1 => array(
          'id'=>1,
          'name'=>'电脑',
          'pid'=>0,
          'children' =>array(
                            array(
                            'id'=>3,
                            'name'=>'笔记本',
                            'pid'=>1,
                            'children'=>array(
                                        'id'=>7,
                                        'name'=> '超极本',
                                        'pid'=>'3'
                                        ),
                                        array(
                                        'id'=>8,
                                        'name'=> '游戏本',
                                        'pid'=>'3'
                                        ) ,
                            ),
                            array(
                            'id'=>4,
                            'name'=>'台式机',
                            'pid'=>1,
                            ),
          ),
      ),
      2 => array(
            'id'=>2,
            'name'=>'手机',
            'pid'=>0,
            'children' =>array(
                              array(
                                'id'=>5,
                                'name'=>'智能机',
                                'pid'=>2,
                              ),
                              array(
                                'id'=>6,
                                'name'=>'功能机',
                                'pid'=>2,
                              ),
            ),
      ),
      );
?>

Proses pelaksanaan:

Buat tatasusunan kosong

<?php
$tree = array();
?>

Langkah pertama ialah menambah semua id pengelasan Sebagai kunci tatasusunan, dan cipta unit kanak-kanak

<?php
foreach($categories as $category){
  $tree[$category['id']] = $category;
  $tree[$category['id']]['children'] = array();
}
?>

Dalam langkah kedua, gunakan rujukan untuk menambah setiap kategori pada tatasusunan anak kelas induk, supaya struktur pokok boleh dibentuk dalam satu traversal.

<?php
foreach ($tree as $key=>$value) {
  if ($value['pid'] != 0) {
    $tree[$value['pid']]['children'][] = $tree[$key];
  }
}
?>

Akhirnya gunakan print_r(); untuk mencetaknya

<?php
print_r($tree);
?>

Kelebihan: Hubungannya jelas, dan mudah untuk mengubah suai hubungan atasan-bawahan.

Kelemahan: Menggunakan PHP untuk pemprosesan, jika bilangan kategori banyak, kecekapan juga akan berkurangan. <🎜>
Meneruskan pembelajaran
||
<?php header("content-type:text/html;charset=utf-8"); //利用两个foreach来实现分类功能 /* 1. 构建字段 字段名 字段类型 备注 默认值 id int 主键 auto-increment name varchar 分类名称 pid int 父类id 0 */ //先来构建一个原始数组 $categories = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name'=>'手机','pid'=>0), array('id'=>3,'name'=>'笔记本','pid'=>1), array('id'=>4,'name'=>'台式机','pid'=>1), array('id'=>5,'name'=>'智能机','pid'=>2), array('id'=>6,'name'=>'功能机','pid'=>2), array('id'=>7,'name'=>'超级本','pid'=>3), array('id'=>8,'name'=>'游戏本','pid'=>3), ); array( //1对应$categories中的id ,方便直接读取 1 => array( 'id'=>1, 'name'=>'电脑', 'pid'=>0, 'children' =>array( array( 'id'=>3, 'name'=>'笔记本', 'pid'=>1, 'children'=>array( 'id'=>7, 'name'=> '超极本', 'pid'=>'3' ), array( 'id'=>8, 'name'=> '游戏本', 'pid'=>'3' ) , ), array( 'id'=>4, 'name'=>'台式机', 'pid'=>1, ), ), ), 2 => array( 'id'=>2, 'name'=>'手机', 'pid'=>0, 'children' =>array( array( 'id'=>5, 'name'=>'智能机', 'pid'=>2, ), array( 'id'=>6, 'name'=>'功能机', 'pid'=>2, ), ), ), ); //处理过程 $tree = array(); //第一步,将所有的分类id作为数组key,并创建children单元 foreach($categories as $category){ $tree[$category['id']] = $category; $tree[$category['id']]['children'] = array(); } //第二步,利用引用,将每个分类添加到父类children数组中,这样一次遍历即可形成树形结构。 foreach ($tree as $key=>$value) { if ($value['pid'] != 0) { $tree[$value['pid']]['children'][] = $tree[$key]; } } print_r($tree); ?>
  • Cadangan kursus
  • Muat turun perisian kursus