gpt4 book ai didi

php - 从分层表创建一个平面数组

转载 作者:行者123 更新时间:2023-11-30 23:21:31 25 4
gpt4 key购买 nike

我有一个包含 id、parent_id 和 name 字段的表,
一个 parent 可以有多个 child ,但 child 只有一个 parent 。

在获取时,数组看起来像

Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[name]=>firstName
)

[1] => Array
(
[id] => 2
[parent_id] => 1
[name]=>childFirstName
)

[2] => Array
(
[id] => 3
[parent_id] => 0
[name]=>SecondName
)

[3] => Array
(
[id] => 4
[parent_id] => 3
[name]=>childSecondName
)


)

从这张表中,我想要一个平面数组,应该是这样的..

//数组的key是表行的id,id对应的值为parent_name >name

Array
(
[1]=>[firstName],// [row_id]=>[name with parent]
[2]=>[firstName>childFirstName],
[3]=>[secondName],
[4]=>[secondName>childSecondName]
)

最佳答案

<?php

$arr=array(
array("id" => 1, "parent_id" => 0, "name"=>"firstName"),
array("id" => 2, "parent_id" => 1, "name"=>"childFirstName"),
array("id" => 3, "parent_id" => 0, "name"=>"SecondName"),
array("id" => 4, "parent_id" => 3, "name"=>"childSecondName")
);

class test
{
var $arr=array();

function get_name($id)
{
$str='';
if(isset($this->arr[$id]))
{
$parent_id=$this->arr[$id]['parent_id'];
if($parent_id!=0) $str=$this->get_name($parent_id).'>';
$str.=$this->arr[$id]['name'];
}
return $str;
}

function convert($arr)
{
foreach($arr as $row)
{
$this->arr[$row['id']]=$row;
}

reset($this->arr);
$res=array();
foreach($this->arr as $id=>$row)
{
$res[$id]=$this->get_name($id);
}
return $res;
}
}

$c=new test();
$res=$c->convert($arr);
print_r($res);

关于php - 从分层表创建一个平面数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com