Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

skymaster001

Mensagem/Aviso ao acessar vetor - undefined offset

Recommended Posts

Bom dia. Algum entendido saber me dizer por que quando imprimo o vetor vendas5 com os índices setados "manualmente", tudo acontecesse perfeitamente, porém quando executa o FOR
est
á gerando uma mensagem UNDEFINED OFFSET, e aponta as linhas com atribuição dentro do for.
PS: apesar desta mensagem, 'ele' esta conseguindo pegar os valores, somar e guardar a soma certa.

<?php
	echo"<br><br>--$vendas5[0]--";
	echo"<br><br>--$vendas5[1]--";
	echo"<br><br>--$vendas5[2]--";
	echo"<br><br>--$vendas5[3]--";	
	
	for ($i=0; $i<4; $i++)
	{
		$totalvm[0] += $vendas1[$i];
		$totalvm[1] += $vendas2[$i];
		$totalvm[2] += $vendas3[$i];
		$totalvm[3] += $vendas4[$i];
		$totalvm[4] += $vendas5[$i];
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correto, porém os índices e valores referentes a ele existem, tanto é que as contas estão dando certas. Esse warning só está aparecendo dentro do FOR, quando tento acessar o vetor por meio do $i. Se eu usar os valores 0,1,2,3, coloca-los manualmente, o warning desaparece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O índice não existe. $i está assumindo um valor que não existe no array.

Algum array dessa lista não tem os índices de 0 a 3. Faça debud pra saber qual é. Um simples var_dump/print_r vai mostrar isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

 

se tivesse feito o que eu falei lá em cima já teria resolvido há algumas horas...

Foi a primeira coisa que fiz. Só não postei, porque não me ajudou muito, pois pareceu que os indices estão corretos

###Array ( [0] => 15 [1] => 11 [2] => 12 [3] => 14 )

Só se $i está assumindo outro valor que não no intervalo de 0-3

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que eu não postei a questão, nem o resto do código, como a estrutura estava montada. Se não você entenderia pq...se eu fosse fazer com indice no vetor que recebe valor, teria que fazer dois FOR aninhados. Preferi fazer linha por linha, ja que era só 5.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, vocês talvez possam explicar o porquê.

Ah, agora que vi que você usa "+=" em vez de "=".

Então a explicação é simples: "+=" vai falhar na primeira chamada, se a variável não existir.

 

Estes dois trechos são equivalentes:

 

$x += 2;
 
$x = $x + 2;

 

Na segunda linha o problema fica mais explícito: é impossível somar 2 a $x, já que $x não existe. Daí vem o warning. O PHP assume 0, mas emite o warning para alertar o programador.

 

 

 

ainda não entendi pq não fez assim:

for ($i=0; $i<4; $i++){
 $totalvm[$i] += $vendas1[$i];
}

Desenvolva esse loop e verá que o resultado é bem diferente do objetivo do código inicial.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.