• User Newbie

    problema con la funzione non restituisce un array

    Ragazzi, in questo script:

    [php]
    function ArrTestUscita($Id = '0',$A="") {
    if(!is_array($A)) $A=array();
    $Id=$Id-1;
    $A[]=$Id;
    if($Id>0){
    echo "<br>--proseguo-".$Id."-".$A."--<br>";
    ArrTestUscita($Id,$A);
    }else{
    echo "<br>--esco-".$Id."-".$A."--<br>";
    return $A;
    }
    }
    $R= ArrTestUscita(5);
    echo $R;
    foreach($R as $k=>$v){
    echo "<br>--dentro foreach--".$k."--".$v."<br>";
    }
    [/php]ho questo output:

    --proseguo-4-Array--

    --proseguo-3-Array--

    --proseguo-2-Array--

    --proseguo-1-Array--

    --esco-0-Array--

    Warning: Invalid argument supplied for foreach() in [nome della pagina] on line [linea dove c'è il foreach]

    dove sbaglio??

    come mai $R non si comporta come array? Eppure quando fa il return $A è visto come array..

    grazie mille


  • User Attivo

    Ciao,
    stai utilizzando una funzione in modo ricorsivo e l'unica volta in cui questa funzione ritorna l'array è quando, da s'è stessa, viene chiamata per l'ultima volta.
    L'array viene ritornato alla precedente chiamata a sè stessa e non a tutte quelle precedenti.
    Modifica aggiungendo il return alla chiamata ricorsiva:
    [php]
    ...
    return ArrTestUscita($Id,$A);
    ...
    [/php]

    Alessandro


  • User Newbie

    Grazie mille, il tuo post ha risolto il problema.

    Un saluto.