使用mysql中的递归php创建一个数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用mysql中的递归php创建一个数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2276字,纯文字阅读大概需要4分钟。
内容图文
![使用mysql中的递归php创建一个数组](/upload/InfoBanner/zyjiaocheng/888/a65a13725c89493d867e1fb6291d73b3.jpg)
我需要从像这样组织的mysql数据库创建一个数组
id description parentId
1 Level 1 0
2 Level 2 0
3 Level 1a 1
4 Level 1b 1
5 Level 1a1 3
6 Level 1a1a 5
所以输出是这样的:
Level 1
Level 1a
Level 1a1
Level 1a1a
Level 1b
Level 2
但是,我当前的代码只输出到第二级,然后让其他每个孩子都成为自己的父级.以下是当前代码:
$query = "SELECT * FROM pB_test ORDER BY parentId ASC";
$result = mysql_query($query) or die ('Database Error (' . mysql_errno() . ') ' . mysql_error());
$tree = array();
while($row = mysql_fetch_assoc($result))
{
if($row['parentId'] == 0)
{
$row['Children'] = array();
$tree[$row['id']] = array(
'id' => $row['id'],
'description' => $row['description'],
'parentId' => $row['parentId']
);
}
else
{
$tree[$row['parentId']]['Children'][$row['id']] = $row['description'];
}
}
$count = array_keys($tree);
foreach ($count as $array)
{
ksort($tree[$array]['Children']);
}
echo print_r($tree, true);
任何正确方向的帮助或推动都会很棒.干杯
更新:工作准则
$results = array();
while($row=mysql_fetch_assoc($dbresult))
{
$results[]=$row;
$tree = null;
foreach($results as $result)
{
$thisref = &$refs->{$result['id']};
foreach($result as $k => $v)
{
$thisref->{$k} = $v;
}
if ($result['parentId'] == 0) {
$tree->{$result['id']} = &$thisref;
} else {
$refs->{$result['parentId']}->children->{$result['id']} = &$thisref;
}
}
$tree; // contains the newly sorted tree.
}
print_r($tree);
解决方法:
我发现这个代码用于分组父子数组是惊人的.我已经在4个深度进行了测试,没有任何问题.但它不是递归函数.
$tree = null;
foreach($results as $result)
{
$thisref = &$refs->{$result['id']};
foreach($result as $k => $v)
{
$thisref->{$k} = $v;
}
if ($result['parentId'] == 0) {
$tree->{$result['id']} = &$thisref;
} else {
$refs->{$result['parentId']}->children->{$result['id']} = &$thisref;
}
}
$tree; // contains the newly sorted tree.
您可能需要对其进行一些修改才能完全适应您的情况.但基本上它会遍历所有结果并通过引用将它们组合在一起.
请注意,结束$tree数据类型是一个对象而不是一个数组
祝好运
UPDATE
您可以这样创建数组
$query = "SELECT * FROM pB_test ORDER BY parentId ASC";
$dbresult = mysql_query($query) or die ('Database Error (' . mysql_errno() . ') ' . mysql_error());
$results = array();
while($row=mysql_fetch_assoc($dbresult))
{
$results[]=$row
}
内容总结
以上是互联网集市为您收集整理的使用mysql中的递归php创建一个数组全部内容,希望文章能够帮你解决使用mysql中的递归php创建一个数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。