PHP Feil: Undefined offset

I PHP, en indeksert array-butikker Nøkkelverdipar av data ved hjelp av ikke-null heltall som nøkler. Den første matrise elementet har en nøkkel på null og etterfølgende elementer er fortløpende nummerert. En matrise som bruker strenger som nøkler kalles en assosiativ array. Når du prøver å få tilgang til en rekke element med et heltall nøkkel som er utenfor grensene av de gyldige nøkler i en matrise, får du en "udefinert offset" feil. Den tilsvarende feil for en assosiativ array er en "udefinert indeks" feil.

Initial med Array Funksjon

En måte å skape en array i PHP er å bruke "array" -funksjonen. Pass en ordnet liste over elementer og PHP vil skape en indeksert rekke av disse elementene starter med null. For eksempel:

<? Php
$ DAYOFWEEK = array ( "Sun", "man", "ti", "Tor", "to", "Fri", "Sat");
echo $ DAYOFWEEK [2]; // Utskrifter "ti"
echo $ dayOfWeek [5] // utskrifter "Fri"

undefined Offset

En "udefinert offset" feil i PHP oppstår når du prøver å referere en matrise element ved hjelp av en rekke indeksverdi som ikke eksisterer. Hvis du er ny på programmering, kan du glemme at indeksert array element tastene begynner med null, ikke en, og ender med antall elementer i tabellen minus én. For eksempel vil følgende kode produsere en "udefinert offset" feil i PHP fordi "DAYOFWEEK" array har sju elementer ved indekser null gjennom seks, ikke en gjennom syv:

echo $ DAYOFWEEK [7];

Initial Gjennom en funksjon

Man kan også initialisere en matrise ved å sette den tilsvarende returverdien av en funksjon som returnerer en matrise, eller ved å føre en matrise med referanse til en funksjon som vil modifisere tabellen. For eksempel:

$ Matrise = initialize_array (); // En funksjon som returnerer en matrise

Hvis du er usikker på hva det siste elementet i matrisen som returneres av funksjonen og du forsøker å få tilgang til en rekke element etter siste definerte heltall tasten, vil du motta en "udefinert offset" feil.

Unngå Med Count

En måte å unngå en "udefinert offset" feil er å kontrollere heltall tastene du bruker til å bruke for å referere oppstillings verdier med en løkke, for eksempel en "for" loop. Bruk "teller" funksjonen for å bestemme antall elementer i en matrise og lage en "for" loop fra element null opp til det siste elementet. For eksempel, beregner den følgende kode antall elementer i en matrise for å lage en løkke som ikke vil overskride den grense matrisen:

$ NUMDAYS = count ($ DAYOFWEEK); // returnerer 7
for ($ i = 0; $ i <$ NUMDAYS; $ i ++) echo "<li>". $ DAYOFWEEK [$ i]. "</ Li>"; // Elementer nummerert null til seks

Unngå Med "isset" Function

En annen måte å unngå en "udefinert offset" feil er å bruke "isset" -funksjonen. Denne funksjonen vil returnere "true" eller "false" avhengig av om du har en rekke verdi med den angitte nøkkelen. Det vil ikke utløse en "udefinert offset" feil hvis resultatet er falsk. Før du forsøker å referere en rekke element, kaller "isset" -funksjonen for å se om det finnes. For eksempel intervaller følgende kode en teller til den når en rekke nøkkel utenfor oppstillings grenser:

$ Dag = 1;
while (isset ($ DAYOFWEEK [++ $ dag])) echo "<li>". $ DAYOFWEEK [$ dag]. "</ Li>";