Php 邻接表的递归函数
我在创建递归函数以将列表转换为对象时遇到问题:Php 邻接表的递归函数,php,Php,我在创建递归函数以将列表转换为对象时遇到问题: location : 12 : label : 'city 1' children: 13 : label:'city2' children : 14 : label : 'city3'
location :
12 :
label : 'city 1'
children:
13 :
label:'city2'
children :
14 :
label : 'city3'
15 :
label : 'city4'
children :
16 :
.....
.....
122 :
label : 'city 100'
........
因此,我希望创建一个递归函数来返回一个对象,其中包含我上面列出的所有内容,如下所示:
public static function getLocation($config , $id )
{
$id= current($config['id'])
$label = $config['id']['label']
$children = $config['id']['label']['children']
....
if(!empty($children) ){
}else{
foreach( ){
getLocation($config , $id );
}
}
return $obj;
}
如果要将数组转换为std类,可以使用:
创建一个函数,我有一个想法,直到现在我还没有任何解决方案…你想返回什么类型的对象?它可以是一个像StdClass这样的匿名对象,或者你有一个类要创建吗?不,是一个多维数组…类似这样的东西:你的字符串是一个yaml字符串,不是吗?是的,但是我可以得到任何带有$config['.'的节点你为什么要重新发明轮子?直到现在我还不知道怎么做?然后我给你的函数是递归的我没有问题将stdClass转换为array,我想创建“publicstaticfunctiongetlocation”…你的第一行是:>我有问题创建一个递归函数来将一个列表转换为一个对象我回答你这样。。。。如果你想重命名你的函数,你可以,我不禁止你
function arrayToObject($d) {
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return (object) array_map(__FUNCTION__, $d);
}
else {
// Return object
return $d;
}
}