Eğer veri depolama kullandığınız yöntem komşuluk Listesi modeli denir. Ne gerek elde edebilmek için. Bu adımları izleyin.
1) ana unsurları almak ve bir dizi / karma kaydedin.
2) Iterate through the parent array and retrieve child elements using the id of the parent.
Save the result to an array and append as element of the current parent array using "children" as key.
3) JSON çıkan dizi kodlamak.
<?php
$sql = "SELECT * FROM yourtable WHERE PARENT is NULL or PARENT = 0";
$result = $db->query($sql); //a valid MySQL database adapter with a
//"query" method which returns the full result set.
$arr = array();
foreach($result as $row) {
$sql = "SELECT * FROM yourtable WHERE PARENT = {$row['id']}";
$result2 = $db->query($sql);
$row["children"] = $result2;
$arr[] = $row;
}
echo json_encode($arr);
?>
Tablonun bu tür veri hiyerarşisi alma hakkında daha fazla bilgi için, Retrieving Data Hierarchies on a SQL Table üzerine Rum adlı yazıyı okuyun.
Ayrıca, bu uygulamada önlem almak. Bunu uygulamak kolay görünüyor olsa da, bu durumda veritabanı sunucusu olarak, dış kaynak çağrı içeren yineleme sayısına dikkat. Yinelemeli sorgular çağırarak bu gelecekte performans sorunlarına neden dışarı bok atıyor. Bu durumda (o by-ref $ satırda çağrı kullanılan neden emin değilim gerçi), Kendall Hopkins benzer bir tekniği uygulayabilirsiniz. Hakkında daha fazla bilgi iterative external resource calls here.
<?php
$sql = "SELECT * FROM yourtable";
$result = $db->query($sql);
$arr = array();
//re-index the result array based on their actual IDs
foreach ($result as $row) {
$arr[$row['ID']] = $row;
}
foreach ($arr as $item) {
if (!empty($item["PARENT"]) && $item["PARENT"] != 0) {
$arr[$item["PARENT"]]["children"][] = $item;
//unset the discovered child item to clean-up array and release memory allocation
unset($arr[$item["ID"]]);
}
}
echo json_encode($arr);
?>