Autor Tema: Consulta de solución a: PHP Notice: Trying to access array offset on value of  (Leído 70 veces)

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

pmastroberti

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
  • Institución: Universidad Austral
  • Nombre y apellido: Pedro Mastroberti
  • Sistema: Guarani
  • Teléfono laboral: 1165594137
Hola buenas tardes, al realizar el ./guaraní regenerar en producción (si esta setado el es_producción = 1 en el bases ini), nos salta el warning de php "PHP Notice:  Trying to access array offset on value of type int in /usr/local/proyectos/guarani/vendor/siu-toba/framework/php/modelo/toba_modelo_proyecto.php on line 608". Notamos que esto nos trae problemas en un reporte personalizado al estar seteado es_producción = 1, en test y desarrollo no, porque no sale dicho error al regenerar . Estamos en la versión 3.20.0 y vimos que en otros post hablaban de que el problema iba a estar resuelto en próximas versiones, como a corto plazo no tenemos programada una actualización de versión abordamos el problema y llegamos a detectar que en el método “get_descripciones_items($datos)” del archivo “toba_modelo_proyecto.php”:

$desc = array();
                            if (! empty($datos)) {
                                          foreach (array_keys($datos['items']) as $fila) {
                                                         $desc[$fila['item']] = $fila['nombre'];
                                          }
                            }
                            return $desc;

se está haciendo un array_keys de ($datos[‘items’]) lo que devolvería como resultado un array con clave de tipo int y luego en la filia siguiente se intenta acceder al mismo array con una clave de tipo string ej: ‘nombre’ lo que derivaría en el error mencionado arriba, vimos como posible solución no hacer el array_keys de ($datos[‘items’]) para que a $fila se asignen los arrays dentro de $datos[‘items’] y así poder acceder a $fila por la clave de tipo string.

Queríamos saber si esta solución es válida? Por lo que pudimos probar se solucionó el PHP Notice… y todo parece funcionar normal, pero queríamos asegurarnos y consultar previamente a implementarlo.

Saludos y gracias.

fjarque

  • Moderador Global
  • *****
  • Mensajes: 2606
    • Ver Perfil
    • Email
  • Institución: SIU
  • Nombre y apellido: Florencia Jarque
  • Sistema: SIU-Guaraní
Hola Pedro,

Te paso el código de la función tal como quedó corregida en 3.20.1:
Código: [Seleccionar]
private function get_descripciones_items($datos)
{
$desc = array();
if (! empty($datos)) {
foreach (array_keys($datos['items']) as $indx) {
$fila = $datos['items'][$indx];
$desc[$fila['item']] = $fila['nombre'];
}
}
return $desc;
}
Pueden usar ese hasta que migren.

Saludos, Florencia.

pmastroberti

  • Newbie
  • *
  • Mensajes: 6
    • Ver Perfil
  • Institución: Universidad Austral
  • Nombre y apellido: Pedro Mastroberti
  • Sistema: Guarani
  • Teléfono laboral: 1165594137
Muchas gracias Florencia!