ऐसा इसलिए है क्योंकि आपके पास अभी भी सरणी में श्रेणियां हैं जब आप उन्हें पहले ही असाइन कर चुके हैं। आप क्या कर सकते हैं वह कार्य करना है जहां आप संदर्भ के रूप में तर्क पास करते हैं, और फ़ोरैच लूप में उस पहले से निर्दिष्ट श्रेणी से सरणी को साफ़ करने की क्षमता रखने के लिए। नीचे सरल कार्यान्वयन।
function getChildren(&$rows, $p = 0) {
$r = array();
foreach($rows as $row_id => $row) {
if ($row['parent_node']==$p) {
$r[$row['product_category_code']] = getChildren($rows, $row['product_category_code']);
unset($rows[$row_id]);
}
}
return $r;
}