我有一个包含 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/