Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [php] echo/return

  1. #1
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281

    [php] echo/return

    Ciao a tutti

    ho un problema con il return di una funzione ricorsiva per cercare a che livello
    è una data stringa in un array multidimensionale.
    Codice PHP:
    function getLevel(&$source$toSearch,$level 1)
        {
            foreach(
    $source as $key=>$value){
                if(
    is_array($value)){
                    
    getLevel($value$toSearch,  $level+1);
                }else{
                    if(
    $value == $toSearch){
                        return 
    $level;
                    }
                }
            }
        } 
    facendo echo getLevel($mioarray,'ciccio') non mi viene ritornato nulla.

    Invece sostituendo i return con l'echo mi viene stampato il livello.

    Non capisco il perchè di questa "anomalia".

  2. #2
    penso che l'errore sia nella terza riga,

    if(is_array($value)){

    perchè is_array verifica se una variabile è un array. Lo è sicuramente $source, ma non $value che è uno dei singoli valori contenuti nell'array! Perciò la ricorsione non avverrà mai..

  3. #3
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    micca vero.

    $value può essere un array
    con il seguente esempio e mettendo echo al posto di return e cercando 'sette', mi viene stampato 4
    Codice PHP:
    $array = array(=> 'uno',
                        
    => array(
                                      
    => array(
                                                    
    => "cinque",=> array(
                                                                                     
    => "sette"))),
                        
    => 'tre');

    getLevel(&$array'sette') ; 
    quindi mi sembra che la ricorsione avvvenga

  4. #4
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    sono un minchione

    manca il return anche nella chiamata ricorsiva della funzione
    Codice PHP:
    function getLevel(&$source$toSearch,$level 1)
        {
            foreach(
    $source as $key=>$value){
                if(
    is_array($value)){
                    RETURN 
    getLevel($value$toSearch,  $level+1);
                }else{
                    if(
    $value == $toSearch){
                        return 
    $level;
                    }
                }
            }
        } 

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.