È buona norma inizializzare gli elementi in un array associativo in php?
-
08-07-2019 - |
Domanda
Mi ritrovo a fare molte cose con array associativi in ??PHP.
Lo stavo facendo:
foreach ($item as $key=>$value) {
if ($arr[$key] == null) {
$arr[$key] = 0;
}
$arr[$key] += $other_arr[$value];
}
Ma poi mi sono reso conto che funziona bene se escludo la riga che inizializza $ arr [$ key], presumibilmente poiché è null che è trattato come lo stesso di 0.
Rendere sicuro quel tipo di ipotesi in php? E se è sicuro, è una buona idea?
Soluzione
È sicuro ma lo sconsiglio. Se porti la segnalazione degli errori a E_NOTICES vedrai che il tuo codice ne produce molti, mascherando eventuali errori reali (come un nome di variabile errato).
Quello che dovresti davvero fare è:
if (!isset($arr[$key]))
$arr[$key] = 0;
Questo non genererà un avviso (ma fai molta attenzione a non digitare in modo errato $ arr dentro isset ()).
Altri suggerimenti
A partire da php 7
ora puoi fare quanto segue:
foreach ($item as $key=>$value) {
$arr[$key] = ($arr[$key] ?? 0) + other_arr[$value];
}