Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: illumiNatty en Diciembre 08, 2019, 06:11:47 PM

Título: Undefined offset: 1 [PHP]
Publicado por: illumiNatty en Diciembre 08, 2019, 06:11:47 PM
Buenas :D
Estoy tratando de acceder a una var que puede que exista o puede que no. Entonces cuando no existe recibo "Undefined offset:"
$parametros = array(
                "fecha" => $datos['fecha'],
                "nombreFecha" => $datos['nombreFecha'],
                "dato1" => $datos['dato1'][0],
                "dato2" => $datos['dato2'][0],
                "dato2Aux" => $datos['dato2'][1]);


La cuestion es que le puedo dar un valor default verificando su existencia con isset antes de acceder a ella quedandome:


  if (!isset($datos['dato2Aux'][1])) {
                $datos['dato2Aux'][1] = 1;
            }
$parametros = array(
                "fecha" => $datos['fecha'],
                "nombreFecha" => $datos['nombreFecha'],
                "dato1" => $datos['dato1'][0],
                "dato2" => $datos['dato2'][0],
                "dato2Aux" => $datos['dato2'][1]);

Pero son muchas variables y me quedaria como 10 if(!isset(... Hay alguna otra forma ? o mando los 10 if ?
Título: Re:Undefined offset: 1 [PHP]
Publicado por: jioxep en Diciembre 08, 2019, 06:30:19 PM
Buenas! Has intentado hacer un for y meter dentro el if con el isset?

Suponiendo que tu contador sea " i " o la letra que desees, Dentro podría quedar algo así:

  if (!isset($datos['dato2Aux'][ i ])) {
                $datos['dato2Aux'] [ i ] = 1;
            }

También deberías crear una condición por cada tipo de dato me parece.
Título: Re:Undefined offset: 1 [PHP]
Publicado por: DtxdF en Diciembre 08, 2019, 06:32:28 PM
@illumiNatty (https://underc0de.org/foro/index.php?action=profile;u=93194)

¡Hola!.

¿Estás tratando de verificar una clave de un diccionario?. Sí es así, creo que esto te podría servir, no es lo mejor, pero bueno...

Código (php) [Seleccionar]
<?php

$diccionary = [
"clave" => "valor",
"clave1" => "valor1",
"clave2" => "valor2"
];

$verificar = ["clave""clave1""clave2""clave3"];

for ($i=0;$i<count($verificar);$i++) {

$verify $verificar[$i];

if (!(isset($diccionary[$verify]))) {

print($verify.", no está definido."."\n");
}

}

?>


Lo único que tienes que adaptarlo a tu código, aunque podrias hacerlo mejor  :).

Espero te ayude, no tengas dudas en seguir preguntando...

Edito:

Leyendo denuebo su duda, creo que lo que desea hacer es verificar sí existe el indíce de un array en una clave.

Esto lo hice desde la linea de comandos "php -a":

Código (bash) [Seleccionar]
$array = [1,2,3];
var_dump(array_key_exists(0124, $array)); // devuelve 'false'
var_dump(array_key_exists(1, $array)); // devuelve 'true'


Igualmente puedes hacerlo remplazando los numeros, por una clave, en caso de que sea un diccionario anidado.

~ DtxdF