मुझे आपके समाधान में एक समस्या दिखाई दे रही है। जब आप आईडी की जांच करते हैं if($id == $record->id)
आप केवल पेड़ में वर्तमान स्तर से मेल खाएंगे। यानी आईडी =2 के साथ डेल का चयन करना पहले पुनरावृत्ति से मेल नहीं खाएगा, इसलिए आपका कार्य अगले स्तर तक नहीं जाएगा।
आपको अपने चयनित मेनू के पथ का ट्रैक रखना होगा।
आपके मामले में। जब आप डेल का चयन करते हैं तो आप केवल "कंप्यूटर" देखेंगे, क्या मैं सही हूँ?
ऐसा कुछ कैसा रहेगा:
...
function rederTreeById($records, $path) {
echo '<ul>';
foreach($records as $record) {
if(in_array($record->id, $path)) {
echo '<li>'.$record->title;
if(!empty($record->childs)) {
rederTreeById($record->childs, $path);
}
echo '</li>';
} else {
echo '<li>'.$record->title.'</li>';
}
}
echo '</ul>';
}
function getPath($id) {
$path = array();
$current=$id;
$path[] = 1
while(!is_null($categories[$current]->parent_id)) {
$current=$categories[$current]->parent_id
$path[] = $current;
}
return $path;
}
$selectedId = 1;
rederTreeById($rootCategories, getPath($selectedId));
...