[英]Make hierarchy from table with PHP
我在數據庫中有一個表,在這個表中我添加了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;
}
現在如果我用id 3調用這個方法就好了
$this->getData(3); // has a parent
它會像那樣回歸
Array(
[0]=>name1
)
但我想在下面
Array(
[1]=>name3,
[0]=>name1
)
我知道如果我們有父母,我會重新定義陣列,但我如何管理它。 我已經使用了array_push php函數,但它不符合我的條件。
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)因為你做$array[$fetchAllData->parent_id] = $fetchAllData->name;
在if和else中,你在兩種情況下都這樣做,所以放棄了if..else
。 2)嘗試在原始數組中推送第二個調用的結果以獲得所需內容。
您的表中有唯一的ID,因此如果您調用查詢,它將始終只返回一個結果。 也許你想用這種方式編寫查詢:
$sql = "SELECT * from table_name when parent_id = ".$id;
如果你想得到給定ID及其父親的結果,你應該在調用$ this-> fetchSharedFolder(...)后添加它;
$array = array_merge($array, $this->getData($fetchAllData->parent_id));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.