php 将数组组成树状图

2023-11-29 08:25:01 举报文章

在PHP中,数组是一种非常常见的数据类型。有时候我们需要将数组按照特定的规则组成树状结构,以便更好地理解和操作数据。本文将介绍如何使用PHP将数组组成树状图,并给出一些具体的示例。

首先,让我们来思考一个实际的应用场景。假设我们有一个存储分类信息的数组,其中每个元素都包含一个唯一的ID和其对应的父分类ID。现在的问题是,如何将这个数组组织成一个树状图,以方便我们进行分类的展示和操作呢?

我们可以通过遍历数组的方式来实现这个目标。首先,我们创建一个以唯一ID为键的空数组,用于存储每个分类元素。然后,我们遍历原始数组,并根据每个元素的父分类ID来确定其在树状图中的位置。具体的实现代码如下所示:

//by www.qzphp.cn
$categories = [ ['id' => 1, 'name' => '电子产品', 'parent_id' => 0], ['id' => 2, 'name' => '手机', 'parent_id' => 1], ['id' => 3, 'name' => '电脑', 'parent_id' => 1], ['id' => 4, 'name' => '苹果手机', 'parent_id' => 2], ['id' => 5, 'name' => '小米手机', 'parent_id' => 2], ['id' => 6, 'name' => '华为手机', 'parent_id' => 2], ['id' => 7, 'name' => '联想电脑', 'parent_id' => 3], ['id' => 8, 'name' => '戴尔电脑', 'parent_id' => 3],];
$tree = [];
foreach ($categories as $category) {
 $id = $category['id'];
 $parentId = $category['parent_id'];
 if (!isset($tree[$id])) {
 $tree[$id] = ['name' => $category['name']];
}
 if ($parentId != 0) {
 if (!isset($tree[$parentId]['children'])) {
 $tree[$parentId]['children'] = [];
}
 $tree[$parentId]['children'][$id] = &$tree[$id];
}
}
print_r($tree);

上述代码中,我们首先遍历原始数组,对于每个分类元素,如果其ID在树状图中不存在,则将其添加到树状图中。然后,判断该元素是否有父分类ID,若有,则将其追加到父分类的子分类数组中。

通过执行上述代码,我们可以得到如下的树状图结构:

//by www.qzphp.cn
Array( [1] => Array ( [name] => 电子产品 [children] => Array ( [2] => Array ( [name] => 手机 [children] => Array ( [4] => Array ( [name] => 苹果手机 ) [5] => Array ( [name] => 小米手机 ) [6] => Array ( [name] => 华为手机 ) ) ) [3] => Array ( [name] => 电脑 [children] => Array ( [7] => Array ( [name] => 联想电脑 ) [8] => Array ( [name] => 戴尔电脑 ) ) ) ) ))

通过上述树状图,我们可以清晰地看到每个分类元素及其对应的子分类,进一步方便我们进行数据展示和操作。

总结起来,通过遍历原始数组,并根据每个元素的父分类ID将其组织到树状结构中,我们可以方便地将数组组成树状图。这种方法不仅适用于分类信息的组织,还适用于其他类似的数据结构。希望本文对你掌握PHP中数组组成树状图的方法有所帮助。

如果你认为本文可读性较差,内容错误,或者文章排版错乱,请点击举报文章按钮,我们会立即处理!