I PHP , en indeksert rekke butikker nøkkelverdipar av data ved hjelp av ikke-null heltall som nøkler . Den første matrise element har en nøkkel på null og påfølgende elementene er nummerert . En matrise som bruker strenger som nøkler kalles en assosiativ array. Når du forsøker å få tilgang til en rekke element med et heltall nøkkel som er utenfor grensene for de gyldige nøkler i en matrise , får du en "udefinert offset " feil. Tilsvarende feil for en assosiativ array er en "udefinert index " feil. Initialiserer med Array Funksjon
En måte å lage en matrise i PHP er å bruke "array "-funksjonen . Passere en sortert liste over elementer og PHP vil skape en indeksert rekke av disse elementene som starter med null. For eksempel : en
< php $ dayOfWeek = ? $ 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 til en rekke element ved hjelp av en rekke indeksverdi som ikke eksisterer . Hvis du er ny på programmering, kan du glemme at indekserte rekke 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 på indekser null gjennom seks , ikke en gjennom syv:
echo $ dayOfWeek [ 7 ] ;
Starter Gjennom en funksjon
Du kan også starte en matrise ved å sette den lik avkastningen verdien av en funksjon som returnerer en matrise, eller ved passerer en matrise ved referanse til en funksjon som vil modifisere matrisen. For eksempel : en
$ matrise = initialize_array ( ), //en funksjon som returnerer en matrise
p Hvis du er usikker på hva det siste elementet er i matrisen som returneres av funksjonen og du prøver å 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 rekke verdier med en sløyfe , for eksempel en " for " loop. Bruk "teller "-funksjonen til å identifisere antall elementer i en matrise og lage en " for " loop fra element null opp til det siste elementet . For eksempel beregner følgende kode antall elementer i en matrise for å lage en løkke som ikke vil overstige rekke grensen : en
$ numdays = count ( $ dayOfWeek ) ; //returnerer 7 For ( $ i = 0 ; $ i < $ numdays ; $ i + + ) echo "
" . $ dayOfWeek [$ i] . " < /li >"; //elementer nummerert fra 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 til en rekke element , kaller " isset "-funksjonen for å se om den finnes. For eksempel følgende kode trinn en teller til den når en rekke nøkkel utenfor matrisen grenser : en
$ dag = -1 , mens ( isset ( $ dayOfWeek [ + + $ dag] ) ) echo " < ; li > " . $ dayOfWeek [$ dag] . " < /li >";