Ir para conteúdo
Fórum Script Brasil
  • 0

valores da array


Mestereko

Pergunta

dentro de um array eu tenho 3 indices, dessa forma:

$teste[0]

$teste[1]

$teste[2]

eles recebem valores numéricos... eu já descobri como fazer pra pegar o indice que recebeu o maior valor...

mas, algumas vezes esses indices podem receber valores iguais... o que eu quero fazer agora é pegar os dois indices que receberam os dois maiores valores entendem ??

ex:

$teste[0] = 3

$teste[1] = 3

$teste[2] = 1

pegar o indice 0 e 1... tem como fazer isso ?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Meio difícil de responder a sua pergunta... como você que pergar?

armazenar em outro array?

daonde vem esses valore?

você poderia fazer um teste se o valor do primeiro é igual ao do segundo, e depois o do segundo com o do terceiro... e para cada valor igual você registra isso em outro array...

poste-nos o pedaço do código para entendermos melhor a pergunta

Link para o comentário
Compartilhar em outros sites

  • 0

então tá... lá vai o código:

o php que faz a verificação:

<?
    $radio1 = $_POST['radio1'];
    $radio2 = $_POST['radio2'];
    $radio3 = $_POST['radio3'];
    $radio4 = $_POST['radio4'];
    $radio5 = $_POST['radio5'];

// o array resposta    
    $resposta[0] = 0;
    $resposta[1] = 0;
    $resposta[2] = 0;
    
    
//primeiro grupo de respostas
if ($radio1 == 1){
    $resposta[0]++;

 }else{
       if ($radio1 == 2){
       $resposta[1]++;

       }else{
              if ($radio1 == 3){
             $resposta[2]++;
        
             }
       }
 }

// segundo grupo de respostas
if ($radio2 == 1){
    $resposta[0]++;

 }else{
       if ($radio2 == 2){
       $resposta[1]++;

       }else{
              if ($radio2 == 3){
             $resposta[2]++;

             }
       }
 }

// terceiro grupo de respostas
if ($radio3 == 1){
    $resposta[0]++;

 }else{
       if ($radio3 == 2){
        $resposta[1]++;

       }else{
              if ($radio3 == 3){
              $resposta[2]++;

             }
       }
 }

// quarto grupo de respostas
if ($radio4 == 1){
    $resposta[0]++;

 }else{
       if ($radio4 == 2){
        $resposta[1]++;

       }else{
              if ($radio4 == 3){
              $resposta[2]++;

             }
       }
 }

// quinto grupo de respostas
if ($radio5 == 1){
    $resposta[0]++;

 }else{
       if ($radio5 == 2){
        $resposta[1]++;

       }else{
              if ($radio5 == 3){
              $resposta[2]++;

             }
       }
 }

// verifica qual indice da variavel $resposta recebeu o maior valor 
 $maior = 0;
 $i = 0;

 while ($i < 3)
 {
  if ($maior < $resposta[$i]){    
  $maior = $resposta[$i];
  $indice = $i;
  }
  $i++;
 }


//mostra as mensagens conforme qual indice recebeu o maior valor de respostas
 if ($indice == 0){
     echo "   resposta: 0 - grupo de produtos 1";
 } elseif ($indice == 1){
     echo "   resposta: 1 - grupo de produtos 2";
 } elseif ($indice == 2){
    echo "   resposta: 2 - grupo de produtos 3";
 }

?>
e o código html do form:
<form method="post" name="form1">

 <p>pergunta 1</p>
 <input name="radio1" type="radio" value="1" />teste1
 <input name="radio1" type="radio" value="2" />teste2
 <input name="radio1" type="radio" value="3" />teste3

  <p>pergunta 2</p>
 <input name="radio2" type="radio" value="1" />teste1
 <input name="radio2" type="radio" value="2" />teste2
 <input name="radio2" type="radio" value="3" />teste3

 <p>pergunta 3</p>
 <input name="radio3" type="radio" value="1" />teste1
 <input name="radio3" type="radio" value="2" />teste2
 <input name="radio3" type="radio" value="3" />teste3

 <p>pergunta 4</p>
 <input name="radio4" type="radio" value="1" />teste1
 <input name="radio4" type="radio" value="2" />teste2
 <input name="radio4" type="radio" value="3" />teste3

 <p>pergunta 5</p>
 <input name="radio5" type="radio" value="1" />teste1
 <input name="radio5" type="radio" value="2" />teste2
 <input name="radio5" type="radio" value="3" />teste3

 <p><input type="submit" value="executa" /></p>

</form>

é um sistema de adequação... o cliente responde algumas perguntas e é apresentado para ele o grupo de respostas que mais de adequa em suas necessidades... o que eu perguntei aqui no fórum é o sistema que vai tratar o caso de empates... se der empate entre dois indices, mostre o grupo equivalente aos dois indices....

e ESerra eu até já pensei em usar uma solução como você apresentou... mas o problema dela é indicar o momento que sera usada... por exemplo, somente quando houverem valores repetidos... e esses valores forem os mais altos entre os indices...

Editado por Mestereko
Link para o comentário
Compartilhar em outros sites

  • 0

bom... já que ninguém se propos a responder, eu corri atrás da resposta e consegui... vou postar aqui.... o código esta todo comentado, basta copiar e colar pra conseguir testar e ver como funciona...

o código php (adequacao.php):

<?
    $radio1 = $_POST['radio1'];
    $radio2 = $_POST['radio2'];
    $radio3 = $_POST['radio3'];
    $radio4 = $_POST['radio4'];
    $radio5 = $_POST['radio5'];
    
    $resultados[0] = 0;
    $resultados[1] = 0;
    $resultados[2] = 0;
    
    
//primeiro grupo de respostas
if ($radio1 == 1){
    $resultados[0]++;
 }else{
       if ($radio1 == 2){
       $resultados[1]++;
       }else{
              if ($radio1 == 3){
             $resultados[2]++;
             }
       }
 }

// segundo grupo de respostas
if ($radio2 == 1){
    $resultados[0]++;
 }else{
       if ($radio2 == 2){
       $resultados[1]++;
       }else{
              if ($radio2 == 3){
             $resultados[2]++;
             }
       }
 }

// terceiro grupo de respostas
if ($radio3 == 1){
    $resultados[0]++;
 }else{
       if ($radio3 == 2){
        $resultados[1]++;
       }else{
              if ($radio3 == 3){
              $resultados[2]++;
             }
       }
 }

// quarto grupo de respostas
if ($radio4 == 1){
    $resultados[0]++;
 }else{
       if ($radio4 == 2){
        $resultados[1]++;
       }else{
              if ($radio4 == 3){
              $resultados[2]++;
             }
       }
 }

// quinto grupo de respostas
if ($radio5 == 1){
    $resultados[0]++;
 }else{
       if ($radio5 == 2){
        $resultados[1]++;
       }else{
              if ($radio5 == 3){
              $resultados[2]++;
             }
       }
 }


                                //Criando um vetor auxiliar para armazenar a
   $ordenado = $resultados;     //quantidade de cada resposta

   sort($ordenado);             //Ordenando o vetor em ordem crescente

   $maior = $ordenado[2];       //Pegando o maior valor do vetor ordenado
                                //nesse caso o último

   $j = 0;                      //Variável auxiliar


   //Descobrindo qual índice se encontra o maior valor descoberto...
   for ($i = 0; $i < 3; $i++){
           if ($resultados[$i] == $maior){      //Nesse caso serão os índice 0 e 1
               $Indices[$j] = $i;               //onde está o 8
               $j++;
           }
   }

   //Se o antepenúltimo e o último valor do vetor ordenado forem iguais, então
   //existe mais de um índice com o maior valor.

   if ($ordenado[1] == $ordenado[2]){ // if1
           echo "As respostas com maior número são: <br> ";

           //Para cada item do vetor $Indices, escreva na tela a resposta e a
           //quantidade de marcações dela.
        foreach($Indices as $valor){
            $resposta = $valor + 1;
            echo "$resposta com $resultados[$valor] marcações <br>";



        if ($resposta == 1){
            echo "Produtos do grupo 1";
        } 
        elseif($resposta == 2){
            echo "Produtos do grupo 2";
        }
        elseif($resposta == 3){
            echo "Produtos do grupo 3";
        }
    

           }// FIM foreach

   } // FIM if1
   
   else{

       //Se só um item do vetor tem o maior valor, então só mostre ele.
       foreach($Indices as $valor){
            echo "A resposta com maior número é: ";
            $resposta = $valor + 1;
               echo "$resposta com $resultados[$valor] marcações <br>";
        
        if ($resposta == 1){
            echo "Produtos do grupo 1";
        } 
        elseif($resposta == 2){
            echo "Produtos do grupo 2";
        }
        elseif($resposta == 3){
            echo "Produtos do grupo 3";
        }
      } // FIM foreach
   }// FIM else


?>
e o código do form html (formulario.htm):
<form  action="adequacao.php" method="post" name="form1">

 <p>pergunta 1</p>
 <input name="radio1" type="radio" value="1" />teste1
 <input name="radio1" type="radio" value="2" />teste2
 <input name="radio1" type="radio" value="3" />teste3

  <p>pergunta 2</p>
 <input name="radio2" type="radio" value="1" />teste1
 <input name="radio2" type="radio" value="2" />teste2
 <input name="radio2" type="radio" value="3" />teste3

 <p>pergunta 3</p>
 <input name="radio3" type="radio" value="1" />teste1
 <input name="radio3" type="radio" value="2" />teste2
 <input name="radio3" type="radio" value="3" />teste3

 <p>pergunta 4</p>
 <input name="radio4" type="radio" value="1" />teste1
 <input name="radio4" type="radio" value="2" />teste2
 <input name="radio4" type="radio" value="3" />teste3

 <p>pergunta 5</p>
 <input name="radio5" type="radio" value="1" />teste1
 <input name="radio5" type="radio" value="2" />teste2
 <input name="radio5" type="radio" value="3" />teste3

 <p><input type="submit" value="executa" /></p>

</form>

essa n foi fácil... mas ta ai... funciona... esse código trata o caso de empates entre as respostas, e mostra o resultado com base na resposta que recebeu o maior numero de marcações.... tudo sem banco de dados...

o resto é com vocês se tiverem melhorias, sugestões, reclamações, bugs ou dúvidas pf postem...

vlw galera

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...