¿Es una buena práctica inicializar los elementos en una matriz asociativa en php?
-
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?
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];
}