hippy 0 Denunciar post Postado Março 25, 2009 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
hinom 5 Denunciar post Postado Março 25, 2009 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
hippy 0 Denunciar post Postado Março 25, 2009 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
novato_PHP 0 Denunciar post Postado Março 25, 2009 Num pode usar o foreach? foreach ($rs as $array) { echo $array."<br>"; } Compartilhar este post Link para o post Compartilhar em outros sites
hippy 0 Denunciar post Postado Março 25, 2009 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
JuLIOOXX 0 Denunciar post Postado Março 25, 2009 E quanto a adaptar um foreach pra o segundo array? fica complicado onde ta sendo usado? Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Março 26, 2009 Você precisa verificar se o elemento existe nos dois arrays usando a funçao isset() ;) Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 26, 2009 é, 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
hippy 0 Denunciar post Postado Março 26, 2009 é, 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
~TiuTalk~ 7 Denunciar post Postado Março 26, 2009 O unset não deixa o elemento vazio... Ele exclui o elemento. Você tá fazendo algo errado. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 27, 2009 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
hippy 0 Denunciar post Postado Março 27, 2009 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
hinom 5 Denunciar post Postado Março 27, 2009 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