算法 - 请问php然后把树形数组回溯成一维数组?
本文介绍了算法 - 请问php然后把树形数组回溯成一维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
现有树形数组结构如下
需要把它回溯成一维数组以插入数据库
需要一维数组结构如下
array(
1 => array('id'=>'1','parentid'=>0),
2 => array('id'=>'2','parentid'=>0),
3 => array('id'=>'3','parentid'=>1),
4 => array('id'=>'4','parentid'=>1),
5 => array('id'=>'5','parentid'=>2),
6 => array('id'=>'6','parentid'=>3),
7 => array('id'=>'7','parentid'=>3)
);
我写成这样但不是想要的结果,求大佬更改,谢谢
private function _getOrderData($datas)
{
$_data = [];
static $i = 0;
foreach ($datas as $data) {
$i++;
$rows = ['id' => $data['id'], 'pid' => isset($data['children']) ? $data['id'] : 0, 'menu_order' => $i];
if(isset($data['children'])) {
$this->_getOrderData($data['children']);
}
$_data[] = $rows;
}
return $_data;
}
3Q
解决方案
$arr = array(
1 => array('id' => '1', 'parentid' => 0),
2 => array('id' => '2', 'parentid' => 0),
3 => array('id' => '3', 'parentid' => 1),
4 => array('id' => '4', 'parentid' => 1),
5 => array('id' => '5', 'parentid' => 2),
6 => array('id' => '6', 'parentid' => 3),
7 => array('id' => '7', 'parentid' => 3)
);
$result = tree($arr);
var_dump($result);
function tree($array, $parentid = 0)
{
$result = array();
foreach ($array as $val) {
if ($val["parentid"] == $parentid) {
$indata = array("id" => $val["id"]);
$chidrendata = tree($array, $val["id"]);
if ($chidrendata) {
$indata["children"] = $chidrendata;
}
$result[] = $indata;
}
}
return $result;
}
$list = setlist($result);
var_dump($list);
function setlist($arr, $parentid = 0)
{
$array = array();
foreach ($arr as $val) {
$indata = array("id" => $val["id"], "parentid" => $parentid);
$array[] = $indata;
if (isset($val["children"])) {
$children = setlist($val["children"], $val["id"]);
if ($children) {
$array = array_merge($array, $children);
}
}
}
return $array;
}
这篇关于算法 - 请问php然后把树形数组回溯成一维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文