當前位置:首頁 » 編程語言 » php無限分類

php無限分類

發布時間: 2022-01-07 23:54:28

㈠ 如何使用php實現無限級分類

你還在用浪費時間又浪費內存的遞歸遍歷無限極分類嗎,看了該篇文章,我覺得你應該換換了。
這是我在OSChina上看到的一段非常精簡的PHP無限極分類生成樹方法,巧在引用,整理分享了。

復制代碼代碼如下:

function generateTree($items){
$tree = array();
foreach($items as $item){
if(isset($items[$item['pid']])){
$items[$item['pid']]['son'][] = &$items[$item['id']];
}else{
$tree[] = &$items[$item['id']];
}
}
return $tree;
}
$items = array(
1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
4 => array('id' => 4, 'pid' => 3, 'name' => '長豐縣'),
5 => array('id' => 5, 'pid' => 1, 'name' => '安慶市'),
);
print_r(generateTree($items));

可以看到下面列印的結果:

復制代碼代碼如下:

Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[name] => 安徽省
[son] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] => 合肥市
[son] => Array
(
[0] => Array
(
[id] => 4
[pid] => 3
[name] => 長豐縣
)

)

)

[1] => Array
(
[id] => 5
[pid] => 1
[name] => 安慶市
)

)

)

[1] => Array
(
[id] => 2
[pid] => 0
[name] => 浙江省
)

)

上面生成樹方法還可以精簡到5行:

復制代碼代碼如下:

function generateTree($items){
foreach($items as $item)
$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
return isset($items[0]['son']) ? $items[0]['son'] : array();
}

上面這種無限極分類數據樹形結構化的方法值得借鑒。但是我覺得這段代碼實際用途並不明顯啊,你想取出格式化的樹形數據還是要遞歸啊:

復制代碼代碼如下:

/**
* 如何取數據格式化的樹形數據
*/
$tree = generateTree($items);
function getTreeData($tree){
foreach($tree as $t){
echo $t['name'].'<br>';
if(isset($t['son'])){
getTreeData($t['son']);
}
}
}
getTreeData($tree);

㈡ php無限級分類

同一個表中存放父類和子類,但每一條記錄都要有parent_id和category_id,最頂級分類的父id為0,然後第二層分類的父id只要是相應父類的分類id,以此類推。
顯示的時候,先排序,按id就能分出來。

㈢ php如何查找會員無限分類的所有上級和所有下級

這個就要看你的資料庫是怎麼實現的。
我之前給一個人做個一個類似的會員推廣提成的模塊,就a推廣出的a-1,a-2繼續推廣,得到a-1-1,a-1-2等等。
我的資料庫設計思路如下:
用戶表中有一個son這么一個欄位,這個欄位中存放名下所有會員的id,用分號隔開。
這個欄位的維護:
比如a-1-1推廣出了一個a-1-1-1,此新用戶的id是12345,那麼給a-1-1 a-1 a這個三個用戶son欄位內均添加12345這個id,刪除一個用戶做法一樣。
有了這張表就能實現你要的效果。
查一個會員名下所有的會員,只需要讀取該會員的son欄位即可
查一個會員的上級 怎在資料庫中所搜son欄位,含有此會員id的都是他的上級會員。
當然,還有一個欄位是標記此會員的直接上級會員,這樣 一張表就能從任意會員得到整個會員推廣樹。
希望這個思路能幫到你。

㈣ php無限分類 遞歸中的靜態數組

將靜態數組改為局部數組

㈤ php+mysql實現無限分類

..................................
不知道你要的分類是什麼分類
是寫一個方法實現對數據分類?
while(條件){
分類
}
條件為:如果沒有此類

㈥ 求php後台無限級分類代碼,謝謝

資料庫這么建就好了
id | belongid | name | img
1 | 0 | 名字A | url //A為根,0代表根級別
2 | 1 | 名字B | url //B為A的分支
3 | 1 | 名字C | url //C為A的分支
4 | 2 | 名字D | url //D為B的分支

獲取get belongid,然後belongid為空或者為0的時候顯示資料庫belongid為0的人,點擊任何一個人,進入一個子頁面belongid都為被點擊的這個人的id,在哪個belongid寫入資料庫的信息,那麼,添加的這個人就belongid=GET[「belongid」],這里說的是添加
下面來講講提取數據,為了方便我們新加一個欄位,表明當前用戶在第幾級,tmp欄位,你也可以生成緩存表或緩存文件,先select 出 tmp=0的,然後tmp=1的,直到取到最大的一級,然後tmp=1級的belongid找0級uid的,這樣子依次就可以獲得所有用戶樹形關系了

代碼的話。。
<?php
$iclass=$_GET['iclass'];
if($iclass=="")$iclass="0";
$sql="select * from movie_iclass where bid='$iclass' order by id desc";
$result=mysql_query($sql);
$num=mysql_num_rows($result);
這樣,存進去就好了,應該很簡單的

㈦ php遞歸無限分類縮進怎麼做 急啊

<?php
folder();

// 主要是 $tab 參數,該參數為當前分類縮進層次
function folder($parentid = 0, $tab = 0) {
$sql = "SELECT * FROM choin_article_sort WHERE parentid = '{$parentid}' ORDER BY id DESC";
$query = mysql_query($sql);
while ($rs = mysql_fetch_array($query)) {
// 輸出推薦使用 echo 命令
echo str_repeat('-', $tab); // 縮進填充符你可以自己設定,也可以是圖片等等
echo '中間循環出的內容';
folder($rs["id"], $tab + 1);
}
}
?>

㈧ PHP無限級分組演算法問題

先建立資料庫 id name pid
1 首頁 0
2 問題分類 0
3 知道欄目 0
4 首頁_1 1
5 首頁_2 1
6 問題分類_1 2

先查出pid=0; 的數據 //這是第一級
第一級: 首頁(id=1) 問題分類(id=2) 知道欄目(id=3)
用jquery 時間,滑鼠懸停時間
比如:滑鼠移到首頁上,就會觸發jquery事件,
得到首頁的id
這里用id去查出 pid=id的數據,
如果id=1;
第二級:首頁_1(id=4) 首頁_2(id=5)
這里就和上面一樣了

㈨ PHP如何通過傳引用的思想實現無限分類(代碼

在我的Simpla中,用到了無限分類,使用了PHP的傳引用思想實現無限分類的方法,可以完美展示類似這樣的分類模式。
id pid name
1 0 四川
2 0 重慶
3 1 成都
4
1 綿陽
5 3 高新區
代碼如下所示:
/**
* 數組變成無限級分類--傳引用思想
* @param array $items
* @return array
*/
public static function get_tree($orig) {
//解決下標不是1開始的問題
$items = array();
foreach ($orig as $key => $value) {
$items[$value[『id『]] = $value;
}
//開始組裝
$tree = array();
foreach ($items as $key => $item) {
if ($item[『pid『] == 0) { //為0,則為1級分類
$tree[] = &$items[$key];
} else {
if (isset($items[$item[『pid『]])) { //存在值則為二級分類
$items[$item[『pid『]][『child『][] = &$items[$key]; //傳引用直接賦值與改變
} else { //至少三級分類
//由於是傳引用思想,這里將不會有值
$tree[] = &$items[$key];
}
}
}
return $tree;
}

以上內容很簡單吧,如有錯誤或者更好的方法,希望可以相互交流。謝謝。!

㈩ 急求PHP遞歸無限分類,當前位置寫法

<?php
$testArray = array();
function getSort($num,&$testArray){
$db = new mysqli("localhost","root","123456","test");
$sql = "select * from test where bid=".$num;
$result = $db->query($sql);
if($result){
$search = array();
while($row=$result->fetch_assoc()){
$testArray[] = $row['cloumnsname'];
$search[] = $row['id'];
}
foreach($search as $key=>$value){
getSort($value,$testArray);
}
}
}
$testArray[] = "首頁";
getSort(0,$testArray);
$test = implode(">",$testArray);
echo $test;
?>
有不懂的可以問我!

熱點內容
編程鍵是什麼 發布:2024-09-20 07:52:47 瀏覽:651
學考密碼重置要求的證件是什麼 發布:2024-09-20 07:19:46 瀏覽:477
電腦主伺服器怎麼開機 發布:2024-09-20 07:19:07 瀏覽:728
2022款瑞虎升級哪些配置 發布:2024-09-20 06:59:07 瀏覽:264
資料庫與asp 發布:2024-09-20 06:55:25 瀏覽:727
python解釋編譯 發布:2024-09-20 06:52:57 瀏覽:648
舞蹈豐收腳本 發布:2024-09-20 06:36:26 瀏覽:595
linux進程埠號 發布:2024-09-20 06:36:11 瀏覽:80
派派怎麼改密碼忘了 發布:2024-09-20 06:25:49 瀏覽:780
linux虛擬地址物理地址 發布:2024-09-20 06:23:29 瀏覽:564