PHP数组转树结构以及树结构转数组

藏色散人
Lepaskan: 2023-04-09 18:36:01
ke hadapan
2244 orang telah melayarinya

推荐:《PHP视频教程

public function index() { $data = [ [ 'id'=>1, 'parent_id' => 0, 'name' => '第一个' ], [ 'id'=>2, 'parent_id' => 0, 'name' => '第二个' ], [ 'id'=>3, 'parent_id' => 1, 'name' => '第三个' ], ]; $r = $this->list_to_tree($data); dump($r); }
Salin selepas log masuk

Laravel

#数组转树结构#

function list_to_tree($list, $root = 0, $pk = 'id', $pid = 'parent_id', $child = 'children'){ // 创建Tree $tree = array(); if (is_array($list)) { // 创建基于主键的数组引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] = &$list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent $parentId = 0; if (isset($data[$pid])) { $parentId = $data[$pid]; } if ((string)$root == $parentId) { $tree[] = &$list[$key]; } else { if (isset($refer[$parentId])) { $parent = &$refer[$parentId]; $parent[$child][] = &$list[$key]; } } } } return $tree;}
Salin selepas log masuk

#树结构转数组#

function tree_to_list($tree = [], $children = 'children'){ if (empty($tree) || !is_array($tree)) { return $tree; } $arrRes = []; foreach ($tree as $k => $v) { $arrTmp = $v; unset($arrTmp[$children]); $arrRes[] = $arrTmp; if (!empty($v[$children])) { $arrTmp = tree_to_list($v[$children]); $arrRes = array_merge($arrRes, $arrTmp); } } return $arrRes;}
Salin selepas log masuk

Atas ialah kandungan terperinci PHP数组转树结构以及树结构转数组. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!