Jump to content


Photo

Excluir Dado De Um Array


  • Faça o login para participar
4 replies to this topic

#1 Yendis

Yendis

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado

Posted 02/07/2007, 22:51

Olá, pessoal.

Eu uso intensamente a busca do fórum e tentei várias formas de deletar um índice de um array, mas o que eu gostaria de fazer é um pouco diferente...

Por exemplo:

$array = array('eu', 'tu', 'ele');
$palavra = 'ele';

function deletaIndice { }
// a função deleta o índice que é igual a 'ele' e me retorna um array com os índices restantes sem o índice deletado como 0 ou null, mas como um novo array com índices ('eu', 'tu')

Eu não sei se eu fui claro...

Obrigado pela atenção!
Um abraço a todos!

#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 02/07/2007, 23:13

Bem pensado pouco e rapidamente me veio a função "array_filter", e fiz isso, mas acredito que de para melhorar ... de qualquer forma fica o exemplo básico:

<?php
$palavra = "ele";
$array = array("eu", "tu", "ele");

function deletaIndice($var) { 
 global $palavra;
 return ($var != $palavra);
}

print_r(array_filter($array, "deletaIndice"));
?>

Edição feita por: sk15, 02/07/2007, 23:16.


#3 Yendis

Yendis

    Turista

  • Usuários
  • 29 posts
  • Sexo:Não informado

Posted 02/07/2007, 23:57

Fala, sk15!
Obrigadão pela resposta. Ela retorna o array sem o que eu queria mesmo, mas toda vez que eu tento percorrer o array resultante ($links) com o code:

for ($i=0;$i<count($links);$i++) {
?>
<a href="galeria.php?galeria=<?= $links[$i]?>&language=<?= $language?>"><img src="../../img/link_<?= $links[$i]?>.gif" border="0" /></a>
<? } ?>

Ela acaba me retornando um índice vazio e sem imagem.

O que que vc acha que eu posso fazer?

Foi mal sk15, eu estava cometendo um erro quando eu fazia a iteração no array, eu deveria ter usado o foreach já que os índices não são seqüenciais.

Muito obrigado pela resposta!
Um abraço!

#4 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 03/07/2007, 00:15

Bem pensei que vc queria filtar de alguma forma usando uma função emulada, e tals acho que compliquei mais do que deveria :assobio: ... o mais elaborado nem sempre é o melhor ...

Como vc quer retornar em ordem do "0 até X", somente retirando o valor indesejado acho que seria interresante fazer uma função propria para retirar o elemento indesejado ... veja um exemplo:

<?php
function deletaIndice($array, $deletar) { 
 $novo_array = array();
 foreach ($array as $valor) {
  if ($valor != $deletar) { $novo_array[] = $valor; }
 }
 return $novo_array;
}

$palavra = "eu";
$array = array("eu", "tu", "ele");
$meu_array = deletaIndice($array, $palavra);

print_r($meu_array);
?>

Edição feita por: sk15, 03/07/2007, 00:16.


#5 Hellp

Hellp

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 03/07/2007, 09:46

assim deve dar certo:

$x = array("eu", "tu", "ele", "nos", "vos", "eles");
	$excl = "ele";

	print_r($x); // imprime todo o array
	
	foreach($x as $c => $v) {
		if($v == $excl) {
			unset($x[$c]);
		}
	}
	
	print_r($x); // imprime todo o array menos o "ele"

na verdade nao vai soh imprimir o array sem o valor "ele", vai excluir a chave e o valor do array... ^^'
espero ter ajudado

Hellp

Edição feita por: Hellp, 03/07/2007, 09:49.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq