Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157

    problema funzione che non restituisce un array

    Ragazzi, in questo script:

    Codice PHP:
    function ArrTestUscita($Id '0',$A="") {
        if(!
    is_array($A)) $A=array();
        
    $Id=$Id-1;
        
    $A[]=$Id;
        if(
    $Id>0){
            echo 
    "
    --proseguo-"
    .$Id."-".$A."--
    "
    ;
            
    ArrTestUscita($Id,$A);
        }else{    
            echo 
    "
    --esco-"
    .$Id."-".$A."--
    "
    ;
            return 
    $A;
        }
    }
    $RArrTestUscita(5);
    echo 
    $R;
    foreach(
    $R as $k=>$v){
        echo 
    "
    --dentro foreach--"
    .$k."--".$v."
    "
    ;

    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

  2. #2
    if($Id>0) NON viene restituito un array dalla funzione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    Originariamente inviato da filippo.toso
    if($Id>0) NON viene restituito un array dalla funzione.
    non capisco cosa intendi con il messaggio.

    La funzione che ho postato è sintesi insensata di una funzione più complessa. So che così com'è non serve praticamente a nulla, però l'ho scritta così per evidenziare l'errore che mi da.


    Finchè $Id è maggiore di zero la funzione si richiama da sola andando ad aggiungere all'array $A, creato nel primo ciclo, il valore di $Id.

    Tra l'altro, se fa un ciclo solo esempio
    Codice PHP:
    function ArrTestUscita($Id '0',$A="") {
        if(!
    is_array($A)) $A=array();
        
    $Id=$Id-1;
        
    $A[]=$Id;
        if(
    $Id>0){
            echo 
    "
    --proseguo-"
    .$Id."-".$A."--
    "
    ;
            
    ArrTestUscita($Id,$A);
        }else{    
            echo 
    "
    --esco-"
    .$Id."-".$A."--
    "
    ;
            return 
    $A;
        }
    }
    $RArrTestUscita(1);
    echo 
    $R;
    foreach(
    $R as $k=>$v){
        echo 
    "
    --dentro foreach--"
    .$k."--".$v."
    "
    ;

    --esco-0-Array--
    Array
    --dentro foreach--0--0

    $R è un array.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    Risolto.

    mancava un return quando richiamavo la stessa funzione dall'interno

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.