Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, estou tentando apagar índices de arrays que estejam vazios.
Então usei o unset() para eliminar esses índices, até determinado ponto ele deleta depois não deleta mais.
exemplo em um array de 20 itens onde 17 estão vazios ele só apaga 11. Isso foi um teste q fiz com array criado manualmente.
Já tiveram algum problema parecido com unset() dentro de um for?
trecho do for...
for($j=0; $j < count($ativos); $j++)
{
if(count($ativos[$j]['ATIVOS'])===0){
unset($ativos[$j]);
echo "Apagou $j<br>";
}
}Valeu Beraldo.
Coloquei o contador fora do for para ele não se perder.
Aproveitando o tópico.
Teria como recriar o índice do array principal para 0 de uma forma direta ou teria que fazer um foreach pra criar um outro array? Tentei achar uma função do PHP para isso e não consegui ainda. Mas estou na pesquisa.
pode usar array_values(). Ela cria um novo array a partir dos valores de outro array
Obrigado Beraldo.
Engraçado que pelo manual essa função não parece que faz isso. Pelo menos da minha interpretação.
a cada execução do unset, a função count() retorna um número a menos. O correto (e até mais eficiente, já que a função só é chamada uma vez) é fazer isto:
for($j=0, $total = count($ativos); $j < $total; $j++)
{
if(count($ativos[$j]['ATIVOS'])===0){
veja se resolve