PHP和Mysql怎么实现多级关联的 多维数组

PHP和Mysql怎么实现多级关联的 多维数组,第1张

多级关联不是反应到数据上的,反映在逻辑上.用一个数据表完全就能实现,

打个比方,我要存储省->市->县->村等层级数据

我需要的只有一个字段,一个父id就够了.查询的时候,遍历查询.

然后再php层面,组装输出就好了.

比方说:

idname pid

1中国0

2台湾1

3香港1

4铜锣湾3

5XX村4

打开数据库那就不写了。

前几天刚写了一个。你看下

/* 表结构

CREATE TABLE `lh_categroy` (

`id` int(10) NOT NULL auto_increment,

`parentid` int(6) NOT NULL,

`name` varchar(255) NOT NULL,

`keyword` varchar(255) NOT NULL COMMENT '关键字',

`des` varchar(255) NOT NULL COMMENT '描述',

PRIMARY KEY  (`id`),

UNIQUE KEY `name` (`name`)

) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8

*/

/**

* 获得所有栏目排序后的列表

* @return array

*/

function getAllOrderColumns($id = 0) {

global $columns

$result = array()

if ($id) $result[$id] = $columns[$id]

foreach ($columns as $column) {

if ($column['parentid'] == $id) {

$column['level'] = 0

$result[$column['id']] = $column

getColumns($columns, $column['id'], $result, 1)

}

}

return $result

}

function getColumns($columns, $cid, &$result, $l = 1) {

foreach ($columns as $c) {

if ($c['parentid'] == $cid) {

$c['level'] = $l

$result[$c['id']] = $c

getColumns($columns, $c['id'], $result, $l + 1)

}

}

}

$sql = 'select * from lh_categroy'

$query = mysql_query($sql)

while($row = mysql_fetch_assoc($query)){

$columns[]=$row

}

$fenlei = ''

$fenlei =  '<select name="cid" style="width:200pxheight:25px">

<option value="0">请选择分类</option>'

foreach(getAllOrderColumns() as $v){

$v[name] = $v[level] ? ($v[level]==1 ? '&nbsp&nbsp|-'.$v[name]:'&nbsp&nbsp&nbsp|-'.$v[name]) : $v[name]

$fenlei .= "<option value='$v[id]'>$v[name]</option>"

}

$fenlei .= '</select>'

echo $fenlei


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8350881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存