php,現遞function fa??ctorial($n) { ,現遞 if ($n == 1) { ,現遞 return 1;,現遞 } else { ,現遞 return $n * factorial($n - 1)??;,現遞 },},&??#8220;在PHP中,我們可以使用遞歸函數來(lái)生成樹(shù)形結構的SQL查詢(xún),以下是一個(gè)簡(jiǎn)單的示例:
function generate??TreeS(╥_╥)ql($items, $parentId = 0) { $sql = ''; foreach ($items as $item) { if ($item['parent(′?`)_id'] == $parentId) { $sql .= "I??NSERT INTO tree (id, par??ent_id, na┐(′д`)┌me) VALUES (" . $item['id'] . ", " . $ite(′_`)m['parent_id'] . ", '&quo??t; . $i??tem['name'] . "');n";(◎_◎;) $children = getCヽ(′ー`)ノhildren($items, $item['id']); if (!empty($children)) { $sql .= generateTreeSql($children, $item['id']); } } } return $sql;}function getChildren($items, $parentI??d) { $childヽ(′ー`)ノren = array(); foreach ($items as $item) { if ($??item['parent_id'] == $parentId) { $c(╯‵□′)╯hildren[] = $item; } } return $children;}在這個(gè)示例中,generateTreeSql函數接收一個(gè)包含所有節點(diǎn)??的數組和一個(gè)父節點(diǎn)ID,它遍歷數組,找到所有父節點(diǎn)ID與給定父節點(diǎn)ID相同的節點(diǎn),并將它們插入到SQL查詢(xún)中,它對每個(gè)找到的子節點(diǎn)調用自身,以生成子樹(shù)的SQ( ?ヮ?)L查詢(xún)。
getChildren(′_`)函數用于獲取給定父節點(diǎn)的所有子節點(diǎn)。
以下是一個(gè)使用這個(gè)函數的例子:
$items = array( array('id' => 1, 'parent_i(╯°□°)╯d' => 0, 'name' => 'root'), array('id' => 2, 'par(′▽?zhuān)?ent_id' => 1, 'name' => 'child1')??, array('id' => 3, 'parent_id' => 1, 'name' => 'chil(???)d2'), array('id' => 4, 'parent_id' => 2, 'name' => 'grandchild1'),);ec??ho generateTreeSql($items);這將輸出以下SQL查詢(xún):
INSERT INTO tree (id, parent_id, name) VALUES (1, 0, 'root');INSERT INTO tree (id, parent_id, name) VALUES (2, 1, 'child1');INSERT INTO tree (id, parent_id, name) VALUES (4, 2, 'grandchild1');INSERT INTO tree (id, parent_id, name) VALUES (3, 1, 'child2');
相關(guān)問(wèn)題與解答:
A: 你可以通過(guò)添加一個(gè)參數來(lái)指定要生成的SQL操作類(lèi)型,然后在生成SQL查詢(xún)時(shí)根據這個(gè)參數來(lái)決定使用哪種操作,你可以將generateTreeSql函數修改為如下形式:
function generateTreeSql($items, $parentId = 0, $operation = 'I┐(′д`)┌NSERT') { // ...(°o°) switch ($??operation) { case 'INSERT': $sql .= "INSERT INTO tree (id, parent_??id, name) VALUES (" . $item['id'] . ", " . $item['parent_id'] . ", '" . $item['name'] . "');n"; break; caseヽ(′▽?zhuān)?ノ 'UPDATE': // 生成(cheng)更新語(yǔ)句... break; case 'DELETE': // 生成刪除語(yǔ)句... break; } // ...} A: 你可以在$ite(′Д` )m??s數組中的每個(gè)元素中添加這些額外的字段,并在生成SQL查詢(xún)時(shí)將這些字段也包含進(jìn)去,你可以將$items數組修改為如下形式:
$items = array( array('id'(╬?益?) => 1, 'parent_(?⊿?)id' => 0, 'name' => 'root', 'created_at' => 'NOW()', 'updat??ed_at' => 'NOW()'), // ...);然后在generateTreeSql函數中生成相應的SQL查詢(xún):
$sql .= "INSERT INTO tree (id, par???ent_id, name, created_at, updated_at) VALUES ("ヽ(′ー`)ノ . $item['id'] . ", " . $item['pare(′?ω?`)nt_i(′-ι_-`)d'] . ", '&(′;д;`)quot; . $item['name'] . "'??, " . $item['created_at'] . ", " . $item['updated_at'] . ");n";電話(huà):17730649097
網(wǎng) 址:http://www.hunqingrc.com/
地 址:北京市東城區66號