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 == 1 && is_array($value)) {
self::$_get[$key] = null;
}
elseif (!is_string($value)) {
foreach ($value as $i2 => $value2) {
if ($deep == 2 && is_array($value2)) {
self::$_get[$key] = null;
}
elseif (!is_string($value2)) {
foreach ($value2 as $i3 => $value3) {
if ($deep == 3 && 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