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