我试图创建一个递归方法来填充每个找到的新项目的数组。
function getUserUbigeoString($ubigeo_id){
$ubigeoRepository = new \App\Repositories\UbigeoRepository();
$ubigeos = array();
$ubigeo = $ubigeoRepository->getUbigeo($ubigeo_id);
if(!empty($ubigeo)){
if($ubigeo->ubigeo_id == null){
$ubigeos[] = $ubigeo->name;
}
$ubigeos[] = getUserUbigeoString($ubigeo->ubigeo_id);
}
return $ubigeos;
}
代码的目标是使用所有ubigeos的名称填充数组。
0 => ubigeo1
1 => ubigeo2
2 => ubigeo3
etc...
截至目前,我已经尝试将返回许多不同的位置,但我得到的最接近的结果是:
array:1 [▼
0 => array:1 [▼
0 => array:2 [▼
0 => "Port Dusty"
1 => []
]
]
]
========== EDIT ============ 数据库ubigeos的结构:
id name level ubigeo_id
----------------------------
3 ubigeo1 1 null
37 ubigeo2 2 3
55 ubigeo3 3 37
输出将是一个简单的数组,然后我可以内爆到逗号分隔的字符串:
array:1 [
0 => 'ubigeo1'
1 => 'ubigeo2'
2 => 'ubigeo3'
]
答案 0 :(得分:1)
所以假设你真的想用带有Ubigeo实例的函数来调用它,并且只从那个和Ubigeo实例中获取名称(即最初调用id为55的函数来获取结果数组),你可以尝试像这样的东西(我不想修改你的函数调用参数 - 通常我会将数组作为函数参数包含在内,而不是在每个递归步骤中实例化新的参数):
function getUserUbigeoString($ubigeo_id)
{
$ubigeoRepository = new \App\Repositories\UbigeoRepository();
$ubigeos = array();
$ubigeo = $ubigeoRepository->getUbigeo($ubigeo_id);
if(!empty($ubigeo))
{
if($ubigeo->ubigeo_id != null) {
$ubigeos = getUserUbigeoString($ubigeo->ubigeo_id);
}
$ubigeos[] = $ubigeo->name;
}
return $ubigeos;
}
答案 1 :(得分:0)