In questa lezione di PHP ci occupiamo di una classe di errori molto comuni in questo linguaggio di programmazione ossi gli errori indefiniti o undefined index e undefined offset.
Si tratta di errori di codice PHP che si verificano con un certa frequenza sono errori abbastanza indefiniti e quindi non è sempre semplice individuare la natura dell’errore.
Notice: Undefined index
Non si tratta di un errore grave , ossia il suo verificarsi non blocca il codice, ma indica che avete commesso un errore di programmazione dello stesso. Quindi probabilmente se avrete questo errore qualcosa non è andata come volevate.
In questa guida tenteremo di analizzare i motivi per cui si è verificato.
Generalmente questa dicitura di errore di codice PHP sta ad indicare un errore che si è verificato mentre si tentava di accedere ad un array.
La sintassi di codice della notifica di errore è la seguente.
Notice: Undefined index: valore mancante nel percorso_script on line numero_della_riga
dove come potete vedere capeggia la scritta notifica.
Facciamo un esempio per comprendere meglio il problema, consideriamo questo semplice scipt PHP
// Consideriamo un generico arry chiamato Serie A che racchiude i giocatori divisi per categorie $SerieA = array( 'difesa' => 'Buffon', 'Bonucci', 'Chiellini', 'De Sciglio', 'centricampo' => 'Pjanic','Matuidi', 'Cuadrado', 'Bernardeschi' 'attacco' => 'Ronaldo','Dybala', 'allenatore' => 'Allegri' ); echo $auto['panchina'];
Se mandiamo in esecuzione questo semplice codice otterremo che
Notice: Undefined index: panchina in /path/to/prova.php on line 10
in quanto chiaramente il campo panchina non è definito nell’array. Oppure era stato definito ma successivamente rimosso con la funzione unset($auto[‘panchina’]);. Anche questo secondo caso è un errore di codice che si verifica abbastanza spesso.
Notice: Undefined offset
Della stessa categoria ma leggermente diverso c’e’ l’errore Notice: Undefined offset che viene restituito a video quando si tenta di accedere ad un elemento di un array che non risulta essere disponibile. L’elemento viene individuato questa volta pero’ con chiave numerica.
La sintassi dell’errore è la seguente
Notice: Undefined offset: valore_indice_numerico in percorso_verso_script_causa_notifica on line numero_corrisponde_riga_codice
Facciamo un esempio per meglio comprenderne il funzionamento
// definiamo un semplice array $moto = array('custom','stradali','sterrato'); // ora stampiamo l'elemento con indice numerico 3 ricordando che l'array parte dall'indice zero , quindi il terzo elemento non è presente echo $moto[3];
Avremo quindi il seguente codice di errore
Notice: Undefined offset: 3 in /path/to/esempio.php on line 5
Per evitare questo tipo di errore php mette a disposizione delle funzioni ad hoc come isset , vediamone un esempio
if (isset($moto[3])) { // ora sono sicuro che l'indice numerico 3 esiste... echo $moto[3]; }
Php.net vi fornisce tutta la documentazione esaustiva su isset
Oppure un altro metodo è ricorrere alla funzione array_key_exist() che permette di verificare l’esistenza o meno di un indice numerico di un array nel seguente modo
if (array_key_exists(3, $moto)) { // ora sono sicuro che l'indice numerico 3 esiste... echo $moto[3]; }
anche qui trovate la documenta esaustiva per array_key_exist su php.net