Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Ricorsione e result

  1. #1

    Ricorsione e result

    Salve a tutti

    Nel mio database ho una tabella per la gestione delle categorie basata sul Adjacency List Model (campi standard: id, name, parent_id).

    Per ottenere una visualizzazione ad albero della gerarchia ho scritto una funzione ricorsiva per ottenere un array con tutte le categorie e relativo livello di indentazione:

    codice:
    	function tree ($pid, $level, &$pippo) {
    		$result = $this->get_subcategories($pid);
    		foreach ($result AS $row) {
    			$pippo[] = array('id' => $row->id, 'name' => $row->name, 'level' => $level);
    			$this->tree($row->id, $level+1, $pippo);
    		}
    	}
    Purtroppo non sono riuscito a fare in modo che l'output venga restituito da un result. Attualmente passo, alla chiamata della funzione, un array vuoto come terzo argomento, e questo viene popolato ad ogni iterazione.

    C'è un modo per far si che possa chiamare la funzione con

    codice:
    tree('',0);
    Grazie a tutti!

  2. #2
    Uppatina... spero di essere stato chiaro nel descrivere il problema, in caso contrario lo riespongo in modo diverso

  3. #3
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    il fatto è che a tutti i livelli di nidificazione la funzione ricorsiva deve vedere l'array per aggiungere i propri valori... indi per cui alla funzione ricorsiva l'array va passato.

    Se vuoi evitare di doverglielo passare alla prima invocazione, puoi usare una funzione intermedia che lo faccia per te.

    Codice PHP:
    function tree_ric ($pid$level, &$pippo) {
    ...
    }

    function 
    tree ($pid$level) {
      
    $pippo = array ();
      
    tree_ric ($pid$level$pippo);
      return 
    $pippo;
    }

    tree (''0
    dove tree_ric è la funzione che tu hai chiamato tree.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  4. #4
    Ciao Habanero

    Grazie della risposta, in questo caso preferisco fare direttamente la dichiarazione dell'array nel codice e poi chiamare la funzione.

    Bye!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.