machine_马设计的无限分类
上一篇 / 下一篇 2007-11-09 14:18:37 / 个人分类:php
<?php
Q9g]3\@49907
a2sVT4t!s\2f49907?>
:i$l-gb(gE49907使用例子PHPChina 开源社区门户7M;c$u&[.`
Q9g]3\@49907
class m_layer {PHPChina 开源社区门户"O/_O1S~0Sz.?
/**PHPChina 开源社区门户Y SM Pql
* 无限分类
/A!}7S1m1j
mDP49907 *
\p)PtRq!ym49907 * @param object $mdbPHPChina 开源社区门户-G-S gtnGGi.hb
* @param string $tablePHPChina 开源社区门户/J&Z6Y1Fn%@z"]@;K
* @param string $label_columPHPChina 开源社区门户(_vl(G J;Z-oG-`
* @return arrayPHPChina 开源社区门户0x}5F3n1z
*/PHPChina 开源社区门户l6~b;?~7N
function get_layer($layer, $label_colum = 'label') {
@ |.~[f6`gm
{49907 $new_layer = array();PHPChina 开源社区门户9brSA8i
Ic2RC~O*P49907 if (!is_array($layer) || !is_array(current($layer)) || !array_key_exists($label_colum, current($layer))) {
4JdV!`A5j0r Nnf0n49907 return array();PHPChina 开源社区门户R:Zrx?]
}PHPChina 开源社区门户)V E&w dK*eX|
foreach ($layer as $row) {
7m Oe[!\7sz%V!C49907 $row_str = '';
%O:X&UlY-T} FDBo49907 foreach ($row as $key => $value) {PHPChina 开源社区门户5I U!SNQ Uv
$row_str .= ",'$key' => '$value'";
&h
|8HYW4t!lX
s }F5Q.J49907 }PHPChina 开源社区门户Z\s9Ja:P4M
$row_str = "array(" . substr($row_str, 1) . ')';PHPChina 开源社区门户uoB/R1G*n
PHPChina 开源社区门户@w.xO+r\z
$label_arr = explode('-', $row[$label_colum]);PHPChina 开源社区门户
cWO/Ii\F
$layer_str = '$new_layer';PHPChina 开源社区门户c9t"u!CN UG
foreach ($label_arr as $label) {PHPChina 开源社区门户J{5f!zjGl
if (intval($label)) {
%Xfq,WPI)o49907 $layer_str .= "['child']['$label']";
X\9n/g+_|F8m49907 }PHPChina 开源社区门户K:|"H8L^r'Ua
}
0F&BBymG49907 eval("$layer_str=$row_str;");
[w)p'yt(J49907 }
FE8f|!E i49907 return $new_layer['child'];PHPChina 开源社区门户'cmg`:s4k~ aj
}
-X6e'rY'hOpk'E49907a2sVT4t!s\2f49907?>
:i$l-gb(gE49907使用例子PHPChina 开源社区门户7M;c$u&[.`
<?php
;P ev-eY^0]@7j49907
Gu1|+c/z\49907// 无限分类的例子
7K MjxcQ]/e49907// 实际运用中,以下数据一般都是直接从数据库中提取出来的
UX |bA$V49907
.UW)n`
aO3?Eg49907$label[] = array('name' => '游戏世家', 'layer' => '01');
!v`p'G3B'K_/D
J]49907$label[] = array('name' => '网络游戏', 'layer' => '01-01');PHPChina 开源社区门户MJM4XL'um o&KD2fo
$label[] = array('name' => '卡丁车', 'layer' => '01-01-01');PHPChina 开源社区门户?ZW
v!_t$}W9P[
$label[] = array('name' => '泡泡堂', 'layer' => '01-01-02');PHPChina 开源社区门户f+LMv
qwJ\
$label[] = array('name' => '单机游戏', 'layer' => '01-02');PHPChina 开源社区门户,e/rRCe*PA
$label[] = array('name' => '生化危机', 'layer' => '01-02-01');PHPChina 开源社区门户"oSn!m6xe's
$label[] = array('name' => '盟军敢死队', 'layer' => '01-02-02');PHPChina 开源社区门户%z.ZG9vw)B6I
$label[] = array('name' => '超级玛丽', 'layer' => '01-02-02');PHPChina 开源社区门户T)y;ZcJ6P"w
$label[] = array('name' => '娱乐休闲', 'layer' => '02');PHPChina 开源社区门户l3yIV"s
$label[] = array('name' => '音乐之家', 'layer' => '02-01');