Pregunta bastante simple realmente, ¿cómo paso vars indefinidos a funciones sin errores E_NOTICE?¿Cómo paso vars indefinidos a funciones sin errores E_NOTICE?
Al pasar variables no definidas a funciones como isset(), no se produce ningún error, pero enviar el mismo a su propia función y obtendrá un Notice: Undefined offset: etc.
he pensado algunas razones para desear esto hoy, pero mi función actual es casi un clon de isset, excepto que comprobará si de los argumentos están configurados, en lugar de todos los que hace isset (a, b, c).
function anyset()
{
$argc = func_num_args();
$argv = func_get_args();
for ($i = 0; $i < $argc; $i++)
if (isset($argv[$i])) return true;
else return false;
}
Ahora, tengo por ejemplo una matriz 2D gigante de [x] [y], en la que se colocarán los valores al azar. Necesito verificar que los co-ords aleatorizados contengan algo "próximo" a él (x-1, y-1 a x + 1, y + 1) etc.
No quiero hacer un bucle de 20,000,000 y inicializa cada variable. Solo quiero enviar 9 vars y verificar si alguno ya está configurado.
while (anyset($items[$x-1][$y-1],$items[$x][$y-1],$items[$x+1][$y-1],
$items[$x-1][$y],$items[$x][$y],$items[$x+1][$y],
$items[$x-1][$y+1],$items[$x][$y+1],$items[$x+1][$y+1]));
Like so.
Podría hacer isset (x) || isset (x) || isset (x) pero eso no se ve muy bien.
¿Hay alguna manera de permitir que variables indefinidas pasen a mi función sin generar errores?
No está interesado en tomar la opción fácil;)
Gracias por leer!
\ o
Actualización: 12 de abril 2012, 21:03 Parece que no hay ninguna característica especial que permite que esto suceda. Así que, o pasan como anyset (@ $ array [0], @ $ array [1]), etc, o simplemente envolver todo en un millar de issets así:
while (isset($items[$x-1][$y-1]) || isset($items[$x][$y-1]) || isset($items[$x+1][$y-1]) ||
isset($items[$x-1][$y]) || isset($items[$x][$y]) || isset($items[$x+1][$y]) ||
isset($items[$x-1][$y+1]) || isset($items[$x][$y+1]) || isset($items[$x+1][$y+1]));
Espero que esto ayude a alguien más en el futuro!
Una idea simple, simplemente agregue el error-neutralizador @ justo antes de la función de generación de errores? '$ result = @youFunction()' – Claaker