आसन्न सूची मॉडल का उपयोग करते समय, आप एक पास में संरचना उत्पन्न कर सकते हैं।
एक पास अभिभावक से लिया गया- चाइल्ड ऐरे स्ट्रक्चर (सितंबर 2007; नैट वेनर द्वारा) :
$refs = array();
$list = array();
$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
/** @var $pdo \PDO */
$result = $pdo->query($sql);
foreach ($result as $row)
{
$ref = & $refs[$row['item_id']];
$ref['parent_id'] = $row['parent_id'];
$ref['name'] = $row['name'];
if ($row['parent_id'] == 0)
{
$list[$row['item_id']] = & $ref;
}
else
{
$refs[$row['parent_id']]['children'][$row['item_id']] = & $ref;
}
}
लिंक किए गए आलेख से, आउटपुट के लिए सूची बनाने के लिए यहां एक स्निपेट दिया गया है। यह पुनरावर्ती है, यदि नोड के लिए कोई बच्चा है, तो यह उपट्री बनाने के लिए खुद को फिर से बुलाता है।
function toUL(array $array)
{
$html = '<ul>' . PHP_EOL;
foreach ($array as $value)
{
$html .= '<li>' . $value['name'];
if (!empty($value['children']))
{
$html .= toUL($value['children']);
}
$html .= '</li>' . PHP_EOL;
}
$html .= '</ul>' . PHP_EOL;
return $html;
}
संबंधित प्रश्न: