Ir para conteúdo

Arquivado

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

snowstormdelivery

Função Array_rand sem repetições, como fazer?

Recommended Posts

Eu queria saber, como paro a repetição contida nesse código:

<?php

$pessoas[0] = "Carlos";
$pessoas[1] = "Juliana";
$pessoas[2] = "Igor";
$pessoas[3] = "Marcelo";
$pessoas[4] = "melke";
$pessoas[5] = "caat";
$pessoas[6] = "suflair";
$pessoas[7] = "pink";
$pessoas[8] = "felipe";
$pessoas[9] = "tonny";
$pessoas[10] = "viper";
$pessoas[11] = "renifer";

// sorteia o Juiz
$juiz = array_rand($pessoas, 1);
echo "Juiz: " . $pessoas[$juiz];
// sorteia o Policial
$policial = array_rand($pessoas, 1);
echo "/Policial: " . $pessoas[$policial];
// sorteia o Anjo
$anjo = array_rand($pessoas, 1);
echo "/Anjo: " . $pessoas[$anjo] . "<br><br>";
// sorteia o Assassino
$Assassino = array_rand($pessoas, 1);
echo "Assassino: " . $pessoas[$Assassino];
// sorteia o Aprendiz
$Aprendiz = array_rand($pessoas, 1);
echo "/Aprendiz: " . $pessoas[$Aprendiz];
// sorteia o Silence
$Silence = array_rand($pessoas, 1);
echo "/Silence: " . $pessoas[$Silence] . "<br><br>";
// sorteia o Paralisador
$paralisador = array_rand($pessoas, 1);
echo "Paralisador: " . $pessoas[$paralisador] . "<br>";
// sorteia o Paparazzi
$paparazzi = array_rand($pessoas, 1);
echo "Paparazzi: " . $pessoas[$paparazzi] . "<br>";
// sorteia o Bruxo
$Bruxo = array_rand($pessoas, 1);
echo "Bruxo: " . $pessoas[$Bruxo] . "<br>";
// sorteia o Detetive
$Detetive = array_rand($pessoas, 1);
echo "Detetive: " . $pessoas[$Detetive] . "<br>";
// sorteia o Aldeao
$aldeao = array_rand($pessoas, 1);
echo "Aldeao: " . $pessoas[$aldeao] . "<br>";
// sorteia o Espirito
$Espirito = array_rand($pessoas, 1);
echo "Espirito: " . $pessoas[$Espirito] . "<br><br>";
// sorteia o Fada
$Espirito = array_rand($pessoas, 1);
echo "Fada: " . $pessoas[$Espirito] . "<br>";
// sorteia o Psicopata
$Bruxo = array_rand($pessoas, 1);
echo "Psicopata: " . $pessoas[$Bruxo];

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Beraldo , eu fiz exatamente como você disse. Deu certo até o "sorteio" 12, pois, são 12 palavras para 14 sorteios, o outros 2 últimos deram errado. Eu esqueci de dizer que o sorteio do bruxo tem que corresponder ao do psicopata e, o do espirito deve corresponder o da fada. Para resolver o problema, eu tentei tirar o unset desses 4 sorteios (bruxo-psicopata-fada-espirito), mas esses acabavam repetindo palavras de outros sorteios e sem se corresponder. Também, tentei inúmeras outras coisas, mas prefiro não estender a resposta mais!

Espero que você me dê uma solução, para eu concluir meu programinha.

 

Segue abaixo como o código ficou:

<?php
$pessoas[0] = "Carlos";
$pessoas[1] = "Juliana";
$pessoas[2] = "Igor";
$pessoas[3] = "Marcelo";
$pessoas[4] = "melke";
$pessoas[5] = "caat";
$pessoas[6] = "suflair";
$pessoas[7] = "pink";
$pessoas[8] = "felipe";
$pessoas[9] = "tonny";
$pessoas[10] = "viper";
$pessoas[11] = "rennifer";
// sorteia o Juiz
$juiz = array_rand($pessoas, 1);
echo "Juiz: " . $pessoas[$juiz];
unset( $pessoas[$juiz] );
// sorteia o Policial
$policial = array_rand($pessoas, 1);
echo "/Policial: " . $pessoas[$policial];
unset( $pessoas[$policial] );
// sorteia o Anjo
$anjo = array_rand($pessoas, 1);
echo "/Anjo: " . $pessoas[$anjo] . "<br><br>";
unset( $pessoas[$anjo] );
// sorteia o Assassino
$Assassino = array_rand($pessoas, 1);
echo "Assassino: " . $pessoas[$Assassino];
unset( $pessoas[$Assassino] );
// sorteia o Aprendiz
$Aprendiz = array_rand($pessoas, 1);
echo "/Aprendiz: " . $pessoas[$Aprendiz];
unset( $pessoas[$Aprendiz] );
// sorteia o Silence
$Silence = array_rand($pessoas, 1);
echo "/Silence: " . $pessoas[$Silence] . "<br><br>";
unset( $pessoas[$Silence] );
// sorteia o Paralisador
$paralisador = array_rand($pessoas, 1);
echo "Paralisador: " . $pessoas[$paralisador] . "<br>";
unset( $pessoas[$paralisador] );
// sorteia o Paparazzi
$paparazzi = array_rand($pessoas, 1);
echo "Paparazzi: " . $pessoas[$paparazzi] . "<br>";
unset( $pessoas[$paparazzi] );
// sorteia o Bruxo
$bruxo = array_rand($pessoas, 1);
echo "Bruxo: " . $pessoas[$bruxo] . "<br>";
unset( $pessoas[$bruxo] );
// sorteia o Detetive
$Detetive = array_rand($pessoas, 1);
echo "Detetive: " . $pessoas[$Detetive] . "<br>";
unset( $pessoas[$Detetive] );
// sorteia o Aldeao
$aldeao = array_rand($pessoas, 1);
echo "Aldeao: " . $pessoas[$aldeao] . "<br>";
unset( $pessoas[$aldeao] );
// sorteia o Espirito
$Espirito = array_rand($pessoas, 1);
echo "Espirito: " . $pessoas[$Espirito] . "<br><br>";
unset( $pessoas[$Espirito] );
// sorteia o Fada
$Espirito = array_rand($pessoas, 1);
echo "Fada: " . $pessoas[$Espirito] . "<br>";
unset( $pessoas[$Espirito] );
// sorteia o Psicopata
$bruxo = array_rand($pessoas, 1);
echo "Psicopata: " . $pessoas[$bruxo];
unset( $pessoas[$bruxo] );

?>


Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu esqueci de dizer que o sorteio do bruxo tem que corresponder ao do psicopata e, o do espirito deve corresponder o da fada.

Você quer dizer que eles devem ser iguais?

 

Se for, então:

 

$bruxo = $psicopata = array_rand($pessoas, 1);
unset( $pessoas[$bruxo] );
 
// ...
 
$Espirito = $fada = array_rand($pessoas, 1);
unset( $pessoas[$Espirito] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.