Undefined offset: 1 [PHP]

Iniciado por illumiNatty, Diciembre 08, 2019, 06:11:47 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 08, 2019, 06:11:47 PM Ultima modificación: Diciembre 09, 2019, 02:32:50 AM por Gabriela
Buenas :D
Estoy tratando de acceder a una var que puede que exista o puede que no. Entonces cuando no existe recibo "Undefined offset:"
Código: php
 $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:

Código: php
 
  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 ?

Diciembre 08, 2019, 06:30:19 PM #1 Ultima modificación: Diciembre 08, 2019, 06:32:23 PM por jioxep
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.

Diciembre 08, 2019, 06:32:28 PM #2 Ultima modificación: Diciembre 08, 2019, 06:48:16 PM por DtxdF
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

¡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
<?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
$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
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF