¿Es una buena práctica inicializar los elementos en una matriz asociativa en php?

StackOverflow https://stackoverflow.com/questions/308835

  •  08-07-2019
  •  | 
  •  

Pregunta

Me encuentro haciendo muchas cosas con matrices asociativas en PHP.

Estaba haciendo esto:

 foreach ($item as $key=>$value) {
     if ($arr[$key] == null) {
         $arr[$key] = 0; 
     }
     $arr[$key] += $other_arr[$value];
 }

Pero luego me di cuenta de que funciona bien si excluyo la línea que inicializa $ arr [$ key], presumiblemente ya que es nula y se trata igual que 0.

¿Es seguro hacer ese tipo de suposición en php? Y si es seguro, ¿es una buena idea?

¿Fue útil?

Solución

Es seguro pero lo recomendaría. Si pone su informe de errores a E_NOTICES, verá que su código produce muchos de ellos, enmascarando cualquier error real (como un nombre de variable mal escrito).

Lo que realmente deberías estar haciendo es:

if (!isset($arr[$key]))
    $arr[$key] = 0;

Esto no generará un aviso (pero tenga mucho cuidado de no escribir incorrectamente $ arr dentro de isset ()).

Otros consejos

A partir de php 7 ahora puede hacer lo siguiente:

foreach ($item as $key=>$value) {
    $arr[$key] = ($arr[$key] ?? 0) + other_arr[$value];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top