Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161

    problema funzione ricorsiva

    Ho un problema con una funzione...

    La funzione deve restituirmi un'immagine casuale con la base>dell'altezza da una cartella

    Codice PHP:
    function immagine ($dir$imm) {
        
    $ran rand(0,count($imm));
            
    $image$dir.$imm[$ran];
            
    $size getimagesize($image); 
        
    $x $size[0]; 
        
    $y $size[1]; 
                
        if (
    $x>=$y) return $image;                
        else 
    immagine($dir$imm);    

    dove $dir è la cartella, $imm è l'array con tutte le immagini della cartella ($dir lo uso solo per la comodità di aver restituito l'indirizzo completo dell'immagine, so che potrei usarlo fuori dalla funzione).

    Se la condizione if è vera al primo passaggio tutto ok, mentre negli altri casi mi restituisce una stringa vuota.
    Ho provato ad inserire degli echo per vedere come operava la funzione... la ricorsione è giusta, se trova un'immagine verticale ne cerca un'altra, ma quando trova quella orizzontale non mi restituisce il suo indirizzo.

    Qualcuno mi può aiutare a risolvere il problema?

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    function immagine ($dir$imm) { 
        
    $ran rand(0,count($imm)); 
        
    $image$dir.$imm[$ran]; 
        
    $size getimagesize($image);  
        
    $x $size[0];  
        
    $y $size[1];  
                 
        if (
    $x>=$y
             return 
    $image;                 
        else 
             
    // Se non metti return, la prima chiamata (o le successive) cosa restituisce? nulla !
             
    return immagine($dir$imm);     

    Comunque, stai attento che così rischi di andare loop se nella cartella non ci sono immagini con x >= y. o impiegarci parecchio se la %di immagini z>=y è molto bassa e di immagini ne hai tante

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    Se non metti return, la prima chiamata (o le successive) cosa restituisce? nulla !

    Comunque, stai attento che così rischi di andare loop se nella cartella non ci sono immagini con x >= y. o impiegarci parecchio se la %di immagini z>=y è molto bassa e di immagini ne hai tante
    intanto grazie!
    poi vedrò se aggiungere controlli maggiori o fare un ritaglio immagine in caso di immagini verticali.

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.