Ir para conteúdo

POWERED BY:

Arquivado

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

hippy

excluir dados de uma array e ordenar

Recommended Posts

Boa tarde,

 

tenho o seguinte código para incluir dados em uma array:

 

loop

$arreio[] = $valor;

fim do loop

 

daí eu tenho uma array com os seguintes valores [1,2,3,4,5] por exemplo.

 

utilizando o unset para o ítem 3 eu tenho:

 

$x = 2;

unset($arreio[$x];

 

daí eu tenho uma array com os valores [1,2, ,4,5]

 

como faço para eliminar o espaço em branco e ficar assim:

 

[1,2,4,5]

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa fazer nada, pois uma vez excluído o índice, o mesmo não fica com valor vazio..

 

faça um teste simples e comprove

 

tmp.php

<?php

$rs = array(1,2,3,4,5);

print_r( $rs );

unset( $rs[2] );

echo '<hr>';
print_r( $rs );

?>

 

ou por acaso está falando de outra coisa que não soube expressar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não precisa fazer nada, pois uma vez excluído o índice, o mesmo não fica com valor vazio..

 

faça um teste simples e comprove

 

tmp.php

<?php

$rs = array(1,2,3,4,5);

print_r( $rs );

unset( $rs[2] );

echo '<hr>';
print_r( $rs );

?>

 

ou por acaso está falando de outra coisa que não soube expressar ?

Pois é, muito estranho porque se você utilizar o print_r ele lista corretamente, mas utilize isto e veja:

 

for ($i=0;$i< 5;$i++) {

echo "valor: $arreio[$i] <BR>";

 

}

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num pode usar o foreach?

 

foreach ($rs as $array)
	{
		echo $array."<br>";
			
	}
É exatamente o que eu faço, porém na verdade eu tenho duas arrays:

arreio_1 = [1,2,3,4,5]

arreio_2 = [a,b,c,d,e]

 

e eu queria excluir no arreio_1 o ítem 3 e consequentemente o arreio_2 na mesma posição, mas ao lista uma com foreach a outra eu utilizo um acumulador $i... que me ferra.

 

Não tem como exclui com unset ou array_slice() e reordenar "tapando" os buracos???

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, muito estranho porque se você utilizar o print_r ele lista corretamente, mas utilize isto e veja:

 

for ($i=0;$i< 5;$i++) {

echo "valor: $arreio[$i] <BR>";

 

}

o seu ambiente de desenvolvimento está mal configurado...

 

ative error_display e verá diversos erros nos seus scripts

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, muito estranho porque se você utilizar o print_r ele lista corretamente, mas utilize isto e veja:

 

for ($i=0;$i< 5;$i++) {

echo "valor: $arreio[$i] <BR>";

 

}

o seu ambiente de desenvolvimento está mal configurado...

 

ative error_display e verá diversos erros nos seus scripts

 

Não vi nenhum erro...

 

Bem, isset() mencionado acima é uma solução e eu acabei achando outra, que foi:

 

foreach ($arreio as $key => $valor) {

bla bla bla

}

 

Mesmo assim continua o problema de unset() não realmente eliminar o registro no arreio e reordenar-lo, mas penas deixar em branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele está confundindo um problema com outro e misturando com uma solução que você postou

 

aí fica zuado tentar explicar...

 

 

mas uma coisa é certa,

 

o ambiente de desenvolvimento dele está mal configurado

 

exemplo para provocar erro

 

teste1.php

<?php

// constroi um array com cinco indices de 0 à 4
$rs = array(1,2,3,4,5);

// faz um loop para percorrer 5 vezes o array
for ($i=0;$i< 5;$i++) {
echo "valor: $arreio[$i] <BR>";
}

// elimina o índice 2 do array
unset( $rs[2] );

echo '<hr>';

// faz um loop para percorrer 5 vezes o array. Não verifica se o indice existe ou não.
// se não existir e display_error estiver desativado, o erro será omitido, ao contrário, um erro será reportado e o script interrompido
for ($i=0;$i< 5;$i++) {
echo "valor: $arreio[$i] <BR>";
}
?>

no teste1.php

usando "for ($i=0;$i< 5;$i++) {"

o array será percorrido segundo o que está determinado pelo laço FOR, não importa se o array existe ou não

 

 

 

teste2.php

<?php

// constroi um array com cinco indices de 0 à 4
$rs = array(1,2,3,4,5);


// faz um loop percorrendo todos os laços existentes do array
foreach ($rs as $k => $v)
echo 'chave: ' . $k . ' = valor: ' .  $v . '<br>';
}

// elimina o índice 2 do array
unset( $rs[2] );

echo '<hr>';

// faz um loop percorrendo todos os laços existentes do array (lembre-se, que para o teste, excluimos o indice 2 logo acima, portanto o indice 2 não será exibido, pois não existe...)
foreach ($rs as $k => $v)
echo 'chave: ' . $k . ' = valor: ' .  $v . '<br>';
}
?>

 

 

não sei se entendeu, mas é basicamente isso que estamos tentando explicar.

 

e ative o display_error no seu php.ini e verifique se está editando o php.ini correto e alterando de forma correta..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele está confundindo um problema com outro e misturando com uma solução que você postou

 

aí fica zuado tentar explicar...

 

 

mas uma coisa é certa,

 

o ambiente de desenvolvimento dele está mal configurado

 

exemplo para provocar erro

 

teste1.php

<?php

// constroi um array com cinco indices de 0 à 4
$rs = array(1,2,3,4,5);

// faz um loop para percorrer 5 vezes o array
for ($i=0;$i< 5;$i++) {
echo "valor: $arreio[$i] <BR>";
}

// elimina o índice 2 do array
unset( $rs[2] );

echo '<hr>';

// faz um loop para percorrer 5 vezes o array. Não verifica se o indice existe ou não.
// se não existir e display_error estiver desativado, o erro será omitido, ao contrário, um erro será reportado e o script interrompido
for ($i=0;$i< 5;$i++) {
echo "valor: $arreio[$i] <BR>";
}
?>

no teste1.php

usando "for ($i=0;$i< 5;$i++) {"

o array será percorrido segundo o que está determinado pelo laço FOR, não importa se o array existe ou não

 

 

 

teste2.php

<?php

// constroi um array com cinco indices de 0 à 4
$rs = array(1,2,3,4,5);


// faz um loop percorrendo todos os laços existentes do array
foreach ($rs as $k => $v)
echo 'chave: ' . $k . ' = valor: ' .  $v . '<br>';
}

// elimina o índice 2 do array
unset( $rs[2] );

echo '<hr>';

// faz um loop percorrendo todos os laços existentes do array (lembre-se, que para o teste, excluimos o indice 2 logo acima, portanto o indice 2 não será exibido, pois não existe...)
foreach ($rs as $k => $v)
echo 'chave: ' . $k . ' = valor: ' .  $v . '<br>';
}
?>

 

 

não sei se entendeu, mas é basicamente isso que estamos tentando explicar.

 

e ative o display_error no seu php.ini e verifique se está editando o php.ini correto e alterando de forma correta..

 

Perfeita colocação... mas tem alguma conclusão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tem alguma conclusão?

conserte seus scripts..

 

e prepare o ambiente de desenvolvimento de modo correto

...

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.