Php 从数据表构建特定数组
我有一个数据表,如下所示:Php 从数据表构建特定数组,php,arrays,Php,Arrays,我有一个数据表,如下所示: id | item | parent_id 1 item 1 0 2 item 2 0 3 item 3 2 4 item 4 3 5 item 5 1 ... id是自动递增的,parent\u id反映了左侧的id。您以前可能遇到过这样的数据库表设计 您可以看到,parent\u id不是顺序的 我
id | item | parent_id
1 item 1 0
2 item 2 0
3 item 3 2
4 item 4 3
5 item 5 1
...
id
是自动递增的,parent\u id
反映了左侧的id
。您以前可能遇到过这样的数据库表设计
您可以看到,parent\u id
不是顺序的
我需要将这个表数据以这样的格式放入数组中,所有的家长都会成为潜在的标题,而他们的孩子就在下面
所以我在看这样一个结构:
Item 1
Item 5
Item 2
Item 3
Item 4
etc
$a = Array(item1 => Array(item5), item2 => Array(item3 => Array(item4)))
在PHP
中,我需要一个可以显示上述内容的数组结构。但是我有一个严重的大脑放屁
有人能帮我了解一下数组结构吗?你可以这样写:
Item 1
Item 5
Item 2
Item 3
Item 4
etc
$a = Array(item1 => Array(item5), item2 => Array(item3 => Array(item4)))
或
在第一个示例中,一个项是存储在数组中的所有ist子项的键,在另一个示例中,所有项都使用项键和int值存储。此int值是父项的键。使用哪种方法取决于要对该数组执行的操作。也许我的两个想法都不足以满足你的需要。如果是这种情况,请告诉我您需要什么。首先,我建议您阅读,它对分层结构化数据非常有用,并且有可用的查询可以帮助您获取家长、孩子等。。。等等 现在要回答您的问题,请尝试以下方法:
$result = array();
while($data = mysql_fetch_assoc($query)) {
$id = $data['id'];
$parent = $data['parent_id'];
$keys = array_keys($result);
if(in_array($parent, $keys)) {
$result[$parent] = array_merge($result[$parent], array($id => $data['item']));
} else {
$result = array_merge($result, array($id => $data['item']));
}
}
有趣的文章-我不确定db路由是否是解决我问题的最佳选择,因为如果没有进一步的SQL,我无法确定兔子洞有多深。是的,它越深,php代码就越复杂!如果您使用嵌套的集合层次结构,您将能够在不使用PHP的情况下创建一个处理所需内容的查询。PS:我的代码不正确,我只是测试了它:p!我正在努力纠正它!