Jump to content


Photo

"embaralhar" Array


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

#1 angelripper

angelripper

    Novato no fórum

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

Posted 17/02/2004, 11:22

Pessoal, tem alguma funcao do PHP que eu possa embaralhar um array?

Tipo, eu tenho um array contendo =>
$var[0] = "1"
$var[1] = "5"
$var[2] = "7"

E precisaria aplicar alguma funcao que me resultasse em
$var[0] = "5"
$var[1] = "7"
$var[1] = "1"

Obrigado

#2 goiaba2000

goiaba2000

    Tô com sono!

  • Usuários
  • 1118 posts
  • Sexo:Não informado
  • Localidade:Sobradinho-DF

Posted 17/02/2004, 11:23

tente rand();
PHP + UML + OO + Flash + MySQL = IMBATIVEL

http://www.guilardi.com.br
- portifólio
http://www.deusehmais.com.br
- projeto atual

#3 angelripper

angelripper

    Novato no fórum

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

Posted 17/02/2004, 11:30

Nao, eu nao quero gerar os numeros aleatoriamente.

Eu tenho um array que virá com um valor ordenado. O que eu quero é desordená-lo.

#4 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 17/02/2004, 11:32

Desse jeito que você apresentou no exemplo, você esta aplicando novos valores em cada array, dai você poderia usar algo neste estilo:

$array[0] = rand(0,100);//gera um numero aleatorio entre 0 e 100


E você poderia fazer isso para cada array

Mas caso queira um array aleatorio, faca assim:

$random = rand(0,100);//pegara um numero entre 0 e 100

echo $array[$random];//apresenta na tela o array aleatorio


Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#5 angelripper

angelripper

    Novato no fórum

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

Posted 17/02/2004, 11:37

Bem, entao eu nao devo ter me expressado direito :)

Eu devo receber um array ordenado sempre do BD.
pode ser {1,2,3,4,5,6,7}
ou {1,2,3,4}
ou {1,2}

Eu nao saberei quantos item virao neste array. Algumas vezes pode conter 1 ou n elementos. A única certeza é que eles virao ordenados do BD.

O que eu preciso é alguma funcao que me embaralhe o conteúdo SEM HAVER REPETICAO. Como no exemplo acima, a funcao me retornaria
{3,5,1,2,4,7,6}
ou
{3,2,4,1}
ou
{2,1}

existe alguma funcao pronta que faca isto no PHP?

Valeu

#6 angelripper

angelripper

    Novato no fórum

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

Posted 17/02/2004, 11:48

Achei a solucao :
existe uma funcao chamada shuffle()

Valeu

#7 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 17/02/2004, 11:50

hmmmmmmmm, então veja este exemplo:

<?
//digamos que $valores é o array para os valores
srand((float)microtime() * 1000000);//srand para "semear"
shuffle($valores);//aqui a funcao, ela embaralha os valores
while (list(, $valor) = each($valores)) {
  echo $valor;
}
?>


Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image




1 user(s) are reading this topic

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

IPB Skin By Virteq