无限分类存储及PHP高效展现数组处理(一)

最近正好遇到一个项目,  是有一个无限分类的内容, 需要处理成树结构.  之前一直使用的是递归的方式去处理的.  但是这种方式执行效率实在太低. 所以今天换了一个方式去处理.

下面贴上代码:

表结构:




到这里, 我想大家也看明白了,  这里没有使用PID的方式去处理的.    PS. 上面的表结构我是在网上找的. 但是我的主要要表述的是我的处理方式;

先上代码:

<?php
mysql_connect("10.1.59.222:3306", 'root', '123456');
mysql_select_db('demo');
mysql_query("SET NAMES UTF8");

$sql = "select id, catpath as fullpath, name from category order by fullpath";

$result = mysql_query($sql);
$rows = array();
while (false !== ($row = mysql_fetch_array($result, MYSQL_ASSOC)))
{
	$row['name'] = iconv('utf-8', 'gbk', $row['name']);
	$rows[] = $row;
}

$tree = array();
if (is_array($rows))
{
	foreach ($rows as $k => $v)
	{
		$fullpath = explode('-',$v['fullpath']);
		$count = count($fullpath);
		$path = "tree";
		for ($i = 0; $i < $count; $i++)
		{
			if ($i >= 1)
			{
				$path .= "[" . $fullpath[$i] . "]['CHILDREN']";
			}
			
		}
		$arrStr = 'array(';
		foreach ($v as $key => $val)
		{
			$arrStr .= '"' .$key . '" => "' . $val . '",';
		}
		$arrStr .= ')';
		//echo ('$' . $path . '[' . $v['id'] . ']=' . $arrStr . ';' . '<br/>');
		eval('$' . $path . '[' . $v['id'] . ']=' . $arrStr . ';');
	}
			
		file_put_contents('1.txt', print_r($tree, true));
}
		//$tree['CHILDREN'][1] = array(['PROJECT_ID'] => 1, ['PID'] => 2, ....);
?>
最后的$tree就是我们所需要的数组.  这边的关键是字符串的拼接和 eval函数的使用.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值