Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据表构建特定数组_Php_Arrays - Fatal编程技术网

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!我正在努力纠正它!