新聞 ,    pid => 0 ..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用數(shù)組實(shí)現(xiàn)PHP無限級(jí)分類

發(fā)布時(shí)間:2020-08-03 12:41:04 來源:網(wǎng)絡(luò) 閱讀:225 作者:shenliyang 欄目:web開發(fā)

點(diǎn)擊(此處)折疊或打開

  1. <?php
  2. $cates = array(
  3.  array(
  4.   'cid' => 1,
  5.   'cname' => '新聞',
  6.   'pid' => 0
  7.  ),
  8.  array(
  9.   'cid' => 2,
  10.   'cname' => '通知',
  11.   'pid' => 0
  12.  ),
  13.  array(
  14.   'cid' => 3,
  15.   'cname' => '國(guó)內(nèi)新聞',
  16.   'pid' => 1
  17.  ),
  18.  array(
  19.   'cid' => 4,
  20.   'cname' => '國(guó)際新聞',
  21.   'pid' => 1
  22.  ),
  23.  array(
  24.   'cid' => 5,
  25.   'cname' => '北京新聞',
  26.   'pid' => 3
  27.  ),
  28.  array(
  29.   'cid' => 6,
  30.   'cname' => '上海新聞',
  31.   'pid' => 3
  32.  ),
  33.  array(
  34.   'cid' => 7,
  35.   'cname' => '緊急通知',
  36.   'pid' => 2
  37.  ),
  38.  array(
  39.   'cid' => 8,
  40.   'cname' => '一般通知',
  41.   'pid' => 2
  42.  ),
  43. );
  44. /**
  45.  * 生成菜單
  46.  *
  47.  * @param array $data 原始數(shù)據(jù)
  48.  * @param integer $pid 當(dāng)前分類的父id
  49.  * @return array 處理后數(shù)據(jù)
  50.  */
  51. function createMenuTree($data = array(), $pid = 0)
  52. {
  53.  if (empty($data))
  54.  {
  55.   return array();
  56.  }
  57.  static $level = 0;
  58.  $returnArray = array();
  59.  foreach ($data as $node)
  60.  {
  61.   if ($node['pid'] == $pid)
  62.   {
  63.    $returnArray[] = array(
  64.     'cid' => $node['cid'],
  65.     'cname' => $node['cname'],
  66.     'level' => $level
  67.    );
  68.    if (hasChild($node['cid'], $data))
  69.    {
  70.     $level++;
  71.     $returnArray = array_merge($returnArray, createMenuTree($data, $node['cid']));
  72.     $level--;
  73.    }
  74.   }
  75.  }
  76.  return $returnArray;
  77. }
  78. /**
  79.  * 檢查是否有子分類
  80.  *
  81.  * @param integer $cid 當(dāng)前分類的id
  82.  * @param array $data 原始數(shù)據(jù)
  83.  * @return boolean 是否有子分類
  84.  */
  85. function hasChild($cid, $data)
  86. {
  87.  $hasChild = false;
  88.  foreach ($data as $node)
  89.  {
  90.   if ($node['pid'] == $cid)
  91.   {
  92.    $hasChild = true;
  93.    break;
  94.   }
  95.  }
  96.  return $hasChild;
  97. }
  98. header('Content-Type: text/html; charset=utf-8');
  99. $result = createMenuTree($cates);
  100. foreach ($result as $row)
  101. {
  102.  for ($i = 0; $i < $row['level']; $i++)
  103.  {
  104.   echo "t";
  105.  }
  106.  echo $row['cname'] . "n";
  107. }
  108. ?>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI