您的位置 首页 php技术

PHP二级分类以及无限级分类

//从数据库中取出的分类数据 $original_array = array( array(‘id’ =&gt…

//从数据库中取出的分类数据

$original_array = array(

  array('id' => 1,'pid' => 0,'name' => '新闻分类'),

  array('id' => 2,'pid' => 0,'name' => '最新公告'),

  array('id' => 3,'pid' => 1,'name' => '国内新闻'),

  array('id' => 4,'pid' => 1,'name' => '国际新闻'),

  array('id' => 5,'pid' => 0,'name' => '图片分类'),

  array('id' => 6,'pid' => 5,'name' => '新闻图片'),

  array('id' => 7,'pid' => 5,'name' => '其它图片')

);

同时,数据库是这个样子的。
说明:数据库的分类就是这个样子的!取出来的数组也是这个样子的!一般这样子的!

//从数据库中取出的分类数据

$original_array = array(

  array(

    'id' => 1,

    'pid' => 0,

    'name' => '新闻分类'

  ),

  array(

    'id' => 2,

    'pid' => 0,

    'name' => '最新公告'

  ),

  array(

    'id' => 3,

    'pid' => 1,

    'name' => '国内新闻'

  ),

  array(

    'id' => 4,

    'pid' => 1,

    'name' => '国际新闻'

  ),

  array(

    'id' => 5,

    'pid' => 0,

    'name' => '图片分类'

  ),

  array(

    'id' => 6,

    'pid' => 5,

    'name' => '新闻图片'

  ),

  array(

    'id' => 7,

    'pid' => 5,

    'name' => '其它图片'

  )

);

很明显,这里数组多了一个字段,就是 children!

那么,怎么 从 $original_array 变为 $output_array呢?这里有我一个朋友做的函数,当然也用到 foreach!

函数如下:

//整理函数

/**

 * 生成无限级树算法

 * @author Baiyu 2014-04-01

 * @param array $arr        输入数组

 * @param number $pid        根级的pid

 * @param string $column_name    列名,id|pid父id的名字|children子数组的键名

 * @return array $ret

 */

function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') {

  list($idname, $pidname, $cldname) = explode('|', $column_name);

  $ret = array();

  foreach ($arr as $k => $v) {

    if ($v [$pidname] == $pid) {

      $tmp = $arr [$k];

      unset($arr [$k]);

      $tmp [$cldname] = make_tree($arr, $v [$idname], $column_name);

      $ret [] = $tmp;

    }

  }

  return $ret;

}

完整使用方法如下:

$output_array =make_tree($arr, 0, ‘id|pid|children’)

函数之后,我们这样调用就得到了一级分类与二级分类!

 

foreach ($output_array as $key => $value) {

  echo '
'.$value['name'].'
';

  foreach ($value['children'] as $key => $value) {

    echo $value['name'].',';

}
本文来自网络,不代表MuKe网站资源立场,转载请注明出处:https://www.somke.cn/archives/30

作者: delon

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

在线咨询: QQ交谈

邮箱: lon_mail@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部