Undefined offset
Um "undefined compensar " erro no PHP ocorre quando você tenta fazer referência a um elemento de matriz usando um valor de índice de matriz que não existe. Se você é novo em programação , você pode esquecer que as chaves elemento de matriz indexada começam com zero, não um, e terminam com o número de elementos do array menos um. Por exemplo, o código a seguir produzirá um "undefined compensar" erro no PHP porque a matriz " dayofweek " tem sete elementos em índices de zero a seis , e não de um a sete :
echo $ DayOfWeek [ 7 ] ;
inicialização através de uma função
Você também pode inicializar uma matriz definindo- igual ao valor de retorno de uma função que retorna um array, ou por passar um array por referência a uma função que irá modificar a matriz . Por exemplo :
$ array = initialize_array () //a função que retorna um array
Se não tiver certeza que o último elemento na matriz é retornado pela função e você tentar para acessar um elemento da matriz após a última chave de número inteiro definido, você receberá um erro "undefined compensar" .
Evitando com Contagem
uma maneira de evitar um " ; indefinido compensar " o erro é controlar as chaves inteiras que você usa para usar para referenciar os valores de matriz com um laço , como um laço" for " . Use a função de "contar" para identificar o número de elementos em uma matriz e criar um laço "for" de elemento de zero até o último elemento . Por exemplo, o código a seguir calcula o número de elementos em uma matriz para criar um loop que não poderá ultrapassar o limite de matriz :
$ numdays = count ( $ dayofweek ); //retorna 7Para ($ i = 0 ; $ i <$ numdays ; $ i + +) echo "
" . $ dayofweek [$ i] . " "; //elementos numerados de zero a seis
Evitando com a função " isset "
Outra forma de evitar um " indefinido compensar " erro é usar a" função isset " . Esta função irá retornar "true" ou "false" , dependendo se você tem um valor de array com a chave especificada . Não vai desencadear um erro " indefinido compensar" se o resultado é falso. Antes de tentar fazer referência a um elemento da matriz , chame a função " isset " para ver se ele existir. Por exemplo, o código a seguir incrementa um contador até que ele atinja uma chave de matriz fora dos limites da matriz :
$ day = -1; while ( isset ($ dayofweek [+ + $ dia] ) ) echo " < ; li> " . $ dayofweek [$ dia] . " ";