您的位置:首页 > 编程语言 > PHP开发

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

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

下面贴上代码:

表结构:





到这里, 我想大家也看明白了,  这里没有使用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函数的使用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息