我在数据库中有一个表,在这个表中我添加了3列i,name,parent_id.please见下文。
ID | name | parent_id
1 name1 0
2 name2 1
3 name3 1
现在我想从数据库中获取此ID。我在PHP中创建了一个方法,并从数据库中逐个获取数据。请看下面的
function getData($id)
{
$array = array();
$db = JFactory::getDBO();
$sql = "SELECT * from table_name when id = ".$id;
$db>setQuery($sql);
$fetchAllDatas = $db->getObjectList();
foreach ($fetchAllDatas as $fetchAllData)
{
if($fetchAllData->parent_id > 0)
{
$array[$fetchAllData->parent_id] = $fetchAllData->name;
$this->getData($fetchAllData->parent_id);
}
else
{
$array[$fetchAllData->parent_id] = $fetchAllData->name;
}
}
return $array;
}
现在,如果我将此方法称为<3,如
$this->getData(3); // has a parent
它会像那样返回
Array(
[0]=>name1
)
但我想在下面
Array(
[1]=>name3,
[0]=>name1
)
我知道如果我们有父母,我会重新定义数组,但我如何管理它。 我已经使用了array_push php函数,但它不符合我的条件。
答案 0 :(得分:1)
foreach ($fetchAllDatas as $fetchAllData)
{
$array[$fetchAllData->parent_id] = $fetchAllData->name;
if($fetchAllData->parent_id > 0)
array_push($array,$this->getData($fetchAllData->parent_id));
}
return $array;
1)因为您在if和else中执行了$array[$fetchAllData->parent_id] = $fetchAllData->name;
,所以在这两种情况下执行此操作都是if..else
。
2)尝试在原始数组中推送第二次调用的结果,以获得您想要的结果。
答案 1 :(得分:-1)
您的表格中有唯一的ID,因此如果您调用查询,它将始终只返回一个结果。也许你想用这种方式编写查询:
$sql = "SELECT * from table_name when parent_id = ".$id;
如果您想获得具有给定ID及其父级的结果,您应该在调用$ this-&gt; fetchSharedFolder(...)后添加此内容;
$array = array_merge($array, $this->getData($fetchAllData->parent_id));