Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    restituire un array da una funzione ricorsiva

    Ciao a tutti,
    sto provando a scrivere una query ricorsiva che mi restituisca gli ID in un unico array.
    Il risultato che mi aspetto è qualcosa tipo: Array(7,17,18,8,9,10).
    L'ho impostato come segue ma ottengo un array multidimensionale di questo genere:

    codice:
    Array(
        [0] => Array
            (
                [0] => 7
                [1] => Array
                    (
                        [0] => 17
                        [1] => Array
                            (
                            )
                        [2] => 18
                        [3] => Array
                            (
                            )
                    )
                [2] => 8
                [3] => Array
                    (
                    )
                [4] => 9
                [5] => Array
                    (
                    )
                [6] => 10
                [7] => Array
                    (
                    )
            )
    )

    codice:
    $parent = 10;
    $arr = array();
    $arr[] = recurs($arr, $parent);
    print_r($arr);
    
    function recurs(array $arr, $parent){
            $arr1 = array();
            $query = conn()->prepare("SELECT id FROM tbl WHERE parent = ?");
            $query->execute(array($parent));
            while($r = $query->fetch()){
                    array_push($arr1, $r['id']);
                    $arr1[] = $this->tree_tiny($arr, $r['id']);
            }
            return array_merge($arr, $arr1);
    }

    Come posso risolvere? Grazie a tutti
    Ultima modifica di magic_key; 03-02-2020 a 21:00

  2. #2
    Chiedo scusa, ho estrapolato male il blocco php dal progetto e non posso modificare il post. Ecco la versione corretta:

    codice:
    $parent = 10;
    $arr = array();
    $arr[] = recurs($arr, $parent);
    print_r($arr);
    
    function recurs(array $arr, $parent){
            $arr1 = array();
            $query = conn()->prepare("SELECT id FROM tbl WHERE parent = ?");
            $query->execute(array($parent));
            while($r = $query->fetch()){
                    array_push($arr1, $r['id']);
                    $arr1[] = recurs($arr, $r['id']);
            }
            return array_merge($arr, $arr1);
    }

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,533
    $arr1[] = recurs($arr, $r['id']);

    La recurs restituisce un array...ovvio che poi avrai degli array annidati. Io la cambierei così:
    Codice PHP:
    function recurs($parent){
        
    $arr1 = array();
        
    $query = ... ;
        
    $query->execute(...);
        while(
    $r $query->fetch()){
             
    $arr1[] = $r['id'];
             
    $arr1 array_merge($arr1recurs($r['id'])); 

        }
        return 
    $arr1;


  4. #4
    Quote Originariamente inviata da boots Visualizza il messaggio
    $arr1[] = recurs($arr, $r['id']);

    La recurs restituisce un array...ovvio che poi avrai degli array annidati. Io la cambierei così:
    Codice PHP:
    function recurs($parent){
        
    $arr1 = array();
        
    $query = ... ;
        
    $query->execute(...);
        while(
    $r $query->fetch()){
             
    $arr1[] = $r['id'];
             
    $arr1 array_merge($arr1recurs($r['id'])); 

        }
        return 
    $arr1;

    Risolto grazie mille

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 © 2020 vBulletin Solutions, Inc. All rights reserved.