Ok ho risolto ... dipendeva dall'array iniziale ... pensa te... ! Ho quasi il mal di testa per le prove che ho fatto, e dipendeva dal maledetto array iniziale di prova ...
In pratica se non c'è una chiave definita nell'array, o in uno dei sotto-array, l'if che controlla se quello è il padre che sto cercando da' valore positivo al primo elemento dell'array, quindi aggiunge l'elemento e termina il ciclo che scorre quell'array.
Ricapitolando, qualora dovesse servire a qualcuno, la funzione corretta GREZZA (c'e' da lavorarci un sacco, ma di base fa il suo dovere), è questa:
codice:
$array = array("Etichetta 1" => "Nodo 1", "111" => array("Key 1" => "Valore 1",
"Key 2" => "Valore 2", "Key 3" => "Valore 3", "Key 4" => "Valore 4"),
"Etichetta 3" => array(1 => "aaa1", 2 => "aaa2", 3 => "aaa3", 4 => "aaa4", 5 => "aaa5", 6 => "aaa6", 7 => "aaa7", 8 => "aaa8", 9 => "aaa9", 10 => "aaa10", 11 => "aaa11"), "Etichetta 4" =>
array(1 => "asd", 2 => "asdasdasd", "Etichetta" => array(100 => "aaa100", 101 => "aaa101", 102 => "aaa102", 103 => "aaa103", 104 => "aaa104", "Nested" =>
array("prova 1", "prova 2", "prova 3", "prova 4", "prova 5"), 106 => "aaa106", 107 => "aaa107", 108 => "aaa108", 109 => "aaa109")),
"Etichetta 5" => array(1 => "Nodo vuoto"));
function aggiungi_figlio(&$albero, $padre, $figlio)
{
$point = &$albero;
foreach ($point as $key => $value) {
$point = &$albero[$key];
if ($key == $padre) {
if (is_array($point))
$point[] = $figlio;
else
$point = array($value, $figlio);
} else
if (is_array($value)) {
aggiungi_figlio($point, $padre, $figlio);
}
}
}
aggiungi_figlio($array, "Nested", "Aggiunto!!!");
echo "<pre>";
print_r($array);
echo "</pre>";
Fiuuu ... che faticaccia per 'sta stxxxxata...!