Mein Beispiel:
Code: Alles auswählen
$input = Array aus Contenido Klasse
$level = 2;
function dingens($array, $lev) {
$level = $lev;
if( !isset($result)) $result= array();
foreach($array as $subarray) {
if($subarray[level] <= $level){
echo "<br>id ".$subarray[idcat]." level ".$subarray[level];
$result[] = $subarray;
}
if (!empty($subarray[subs])) {
$result[] = dingens($subcat[subs],$level);
}
}
return $result;
}
$filteredArr = dingens($input,$level);
Das zeigt sich auch beim echo, wo auch Level 1 mit angezeigt wird.
Ein Problem bei rekursiven Funktionen ist ja, dass ich nicht einfach das return Array als $result= array(); definieren kann, weil es sonst bei der Rekursion wieder neu initialisiert wird, daher mein Workarround.
Würde ich nur $result[] ohne das verwenden, würde PHP 7.2 wieder meckern.
Und ein Hauptproblem ist das return.
Wohin setzte ich das bei diesem Funktionsaufbau?
Der oben gezeigte scheint mir am ehesten zu funktionieren, denn andere Varianten brachten gar kein Ergebnis oder eben nur den letzten Teil des input Arrays.
Ja, mit array_merge() hatte ich es auch probiert, noch schlimmer.