Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316

    Trasformazione ciclo in funzione ricorsiva

    Codice PHP:
        static public function GET($key$deep 0) {
            if (empty(
    self::$_get[$key])) {
                
    self::$_get[$key] = null;
                if (isset(
    $_GET[$key])) {
                    if (
    is_string($_GET[$key]) && $deep == 0) {
                        
    self::$_get[$key] = $_GET[$key];
                    }
                    elseif (
    is_array($_GET[$key])) {
                        
    self::$_get[$key] = $_GET[$key];
                        foreach (
    $_GET[$key] as $i => $value) {                        
                            if (
    $deep == && is_array($value)) {
                                
    self::$_get[$key] = null;
                            }
                            elseif (!
    is_string($value)) {
                                foreach (
    $value as $i2 => $value2) {
                                    if (
    $deep == && is_array($value2)) {
                                        
    self::$_get[$key] = null;
                                    }
                                    elseif (!
    is_string($value2)) {
                                        foreach (
    $value2 as $i3 => $value3) {
                                            if (
    $deep == && is_array($value3)) {
                                                
    self::$_get[$key] = null;
                                            }
                                            elseif (
    is_string($value3)) {
                                                
    // ... infinite loop
                                            
    }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            
            return 
    self::$_get[$key]; 
    Come faccio a trasformare tutto il ciclo foreach in una funzione ricorsiva, anche perchè non vorrei mettere limiti a $deep e ovviamente trovo inutile creare cicli dentro cicli quando può essere fatto con una funzione ricorsiva.

    Il funzionamento è questo:
    index.php?test[][]=1
    print_r(self::GET('a', 1));

    DEBUG:
    null

    -----------------------------------

    index.php?test[]=1
    print_r(self::GET('a', 1));

    DEBUG:
    Array
    (
    [0] => 1
    )

    -----------------------------------

    index.php?test[][]=1
    print_r(self::GET('a', 2));

    DEBUG:
    Array
    (
    [0] => Array
    (
    [0] => 2
    )
    )

    -----------------------------------

    index.php?test[][][]=1
    print_r(self::GET('a', 2));

    DEBUG:
    null
    Ultima modifica di zacca94; 26-05-2016 a 10:54

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Cosa vuoi fare di preciso ? Non capisco che cosa vuoi fare.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    è un tentativo di prevenire attacchi Full Path Disclosure senza dover abilitare un error_repoting adatto o fare sempre:
    if (is_array($_POST['x'])) // no

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