Nwlapcug.com


Errore PHP: Undefined Offset

In PHP, un array indicizzato archivia coppie chiave-valore di dati utilizzando numeri interi diversi da zero come chiavi. Il primo elemento della matrice ha una chiave pari a zero e gli elementi successivi sono numerati consecutivamente. Una matrice che utilizza stringhe come chiavi viene chiamata un array associativo. Quando si tenta di accedere a un elemento di matrice con una chiave integer che è esterno ai limiti delle chiavi valide in una matrice, viene visualizzato un errore "undefined offset". L'errore equivalente per un array associativo è un errore di "undefined index".

L'inizializzazione con funzione di matrice

Un modo per creare un array in PHP è quello di utilizzare la funzione di "matrice". Passare un elenco ordinato di elementi e PHP creerà un array indicizzato di quegli elementi partendo da zero. Per esempio:

<? php
$dayofweek = array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
Eco $dayofweek [2]; stampe "Tue"
Eco $dayofweek [5] / / prints "Ven"

Undefined Offset

Quando si tenta di fare riferimento a un elemento di matrice utilizzando un valore di indice di matrice che non esiste, si verifica un errore di "undefined offset" in PHP. Se siete nuovi alla programmazione, si può dimenticare che chiavi di elemento di matrice indicizzata iniziano con zero, non uno e terminano con il numero di elementi dell'array meno uno. Ad esempio, il codice riportato di seguito verrà generato un errore "undefined offset" in PHP perché la matrice "dayofweek" ha sette elementi a indici zero attraverso sei, non uno a sette:

Eco $dayofweek [7];

L'inizializzazione tramite una funzione

È inoltre possibile inizializzare una matrice di impostazione uguale al valore restituito di una funzione che restituisce una matrice, o passando una matrice per riferimento a una funzione che modificherà la matrice. Per esempio:

$array = initialize_array(); una funzione che restituisce una matrice

Se non siete sicuri di quello che è l'ultimo elemento nella matrice restituita dalla funzione e si tenta di accedere a un elemento di matrice dopo l'ultima chiave di intero definito, si riceverà un errore "undefined offset".

Evitando con conteggio

Un modo per evitare un errore di "undefined offset" è quello di controllare le chiavi di valore integer che uso per fare riferimento la matrice dei valori con un ciclo, ad esempio un ciclo "for". Utilizzare la funzione "count" per identificare il numero di elementi in una matrice e creare un ciclo "for" dall'elemento zero fino all'ultimo elemento. Ad esempio, il codice seguente calcola il numero di elementi in una matrice per creare un ciclo che non supererà il limite di matrice:

$numdays = count($dayofweek); restituisce 7
per ($i = 0; $i < $numdays; $i + +) echo "< li >". $dayofweek [$i]. "</li >"; elementi numerati da zero a sei

Evitando con la funzione "isset"

Un altro modo per evitare un errore di "undefined offset" consiste nell'utilizzare la funzione "isset". Questa funzione restituirà "true" o "false" a seconda se si dispone di un valore di matrice con la chiave specificata. Non si innescherà un errore "undefined offset" Se il risultato è false. Prima si tenta di fare riferimento a un elemento della matrice, chiamare la funzione di "isset" per vedere se esiste. Ad esempio, il codice seguente incrementa un contatore fino a raggiungere una chiave matrice fuori dei limiti di matrice:

$day = -1;
mentre (isset($dayofweek[++$day])) echo "< li >". $dayofweek [$day]. "</li >";