Ir para conteúdo

POWERED BY:

Arquivado

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

gabi tardivo

[Resolvido] Array

Recommended Posts

Olá pessoal,

 

Preciso de um help.

Estou fazendo um quiz em php,com opções A, B, C, D, E, F.

 

Depois que a pessoa seleciona as respostas, ele cria um array do resultado.

Preciso saber quais foram mais respondidas para dar resposta.

Ex: mais A, B..

 

Como eu faço?

 

Obrigada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Carlos!

 

Estou pedindo para que conforme mais respostas A ele publique uma determinada página, mas está dando erro :(

 

$soma = array(($_SESSION['radio1']), ($_SESSION['radio2']), ($_SESSION['radio3']), ($_SESSION['radio4']));
print_r(array_count_values($soma));

$a = 'a';
$b = 'b';
$c = 'c';
$d = 'd';
$e = 'e';
$f = 'f';

if ($soma < $a)
echo 'classica';

elseif ($soma < $B)
echo 'boho';

elseif ($soma < $c)
echo 'minimalista';

elseif ($soma < $d)
echo 'moderninha';

elseif ($soma < $e)
echo 'fashionista';

elseif ($soma < $f)
echo 'glam';

?>

 

como eu faço isso? rs..

 

já consegui pegar maior valor com

 

echo max($soma);

 

agora só preciso criar as condições... :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia simplificar seu script trabalhando com outro array para os perfis.

 

Veja:

<?php

$respostas = array( 'A', 'B', 'D', 'A', 'C', 'F', 'F', 'B', 'E', 'A' );

$perfil = array(
   'A' => 'Classica', 
   'B' => 'Boho', 
   'C' => 'Minimalista', 
   'D' => 'Moderninha', 
   'E' => 'Fashionista', 
   'F' => 'Glam'
);

$resposta = array_count_values( $respostas );
arsort( $resposta );

echo $perfil[ key( array_slice( $resposta, 0, 1 ) ) ];

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

problema que se der empate, vou realizar outra pergunta para desempate apenas com as opções empatadas..

isso que está dando nó na minha cabeça!

 

Obrigada, está me ajudando muito!!!!!

 

:grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, basta verificar quantas respostas possuem o mesmo número.

 

<?php

$respostas = array( 'A', 'B', 'D', 'A', 'C', 'F', 'F', 'B', 'E', 'A', 'F' );

$perfil = array(
   'A' => 'Classica', 
   'B' => 'Boho', 
   'C' => 'Minimalista', 
   'D' => 'Moderninha', 
   'E' => 'Fashionista', 
   'F' => 'Glam'
);

$resposta = array_count_values( $respostas );

$max    = max( $resposta );
$result = null;

array_walk( 
       $resposta,
       function( $value, $key ) use ( $max, &$result )
       {
           if( $value == $max )
           {
               $result[ ] = $key;
           }
       }
   );


if( count( $result ) > 1 )
{
   // array com as opções que possuem o mesmo valor
   var_dump( $result );
}
else
{
   // a opção escolhida
   echo $perfil[ reset( $result ) ];
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos,

 

Criei array, mas não to conseguindo que ele "pegue" resultado correspondente. O que eu fiz:

 

if( count( $result ) > 1 )
{
   // array com as opções que possuem o mesmo valor
$desempate = array(
'ab' => 'desempate a e b',
'ac' => 'desempate a e c',
'ad' => 'desempate a e d',
'ae' => 'desempate a e e',
'af' => 'desempate a e f',
'bc' => 'desempate b e c',
'bd' => 'desempate b e d',
'be' => 'desempate b e e',
'bf' => 'desempate b e f',
'cd' => 'desempate c e d',
'ce' => 'desempate c e e',
'cf' => 'desempate c e f',
'de' => 'desempate d e e',
'df' => 'desempate d e f',
'fe' => 'desempate f e e'
);
$teste = join("",$result);
echo ($teste);
}
else
{
   // a opção escolhida
   echo $perfil[ key( array_slice( $resposta, 0, 1 ) ) ];
}

?>

 

Eu fiz join para ele juntar as opções por exemplo empate de a e b. Ele dá bonitinho o resultado, mas na hora de interpretar com qual resposta, ferra tudo.

 

Obrigada de novo!! :)

 

tive uma idéia e tô quase conseguindo, rs!

 

olha só:

 

if( count( $result ) > 1 )
{
   // array com as opções que possuem o mesmo valor
sort($result);
$teste = join("",$result);
echo ('http://www.gabitardivo.com/app/empate'.$teste.'.php');

}
else
{
   // a opção escolhida
   echo $perfil[ key( array_slice( $resposta, 0, 1 ) ) ];
}

 

agora só preciso que no echo ele redirecione para a página. \o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples :rolleyes:

 

Mude:

$teste = join("",$result);
echo ($teste);

 

Para:

echo $desempate[ strtolower( implode( null, $result ) ) ];

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou ficar doida, sério! rs..

 

Meu chefe resolveu mudar..

Colocou peso nas questões e agora desempate são por 3 questões.. não da pra criar uma página para cada possivel resposta, vai ficar gigaaaaaaaante.

 

Tem como puxar apenas as perguntas específicas para um arquivo final?

Pensei em criar um array com include mas não sei se isso existe e é possível.

 

$desempate = array(
       'a' => 'include (respA.php);',
       'b' => 'include (respB.php);',
       'c' => 'include (respC.php);',
       'd' => 'include (respD.php);',
       'e' => 'include (respE.php);',
       'f' => 'include (respF.php);'
       ); 

   echo ( página correspondente );

 

perdida de novo..

 

Obrigada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi!

 

Eu criei uma session para resultado

 

if( count( $result ) > 1 )
{
   // array com as opções que possuem o mesmo valor
sort($result);
$_SESSION['result'] = $result;
echo '<meta http-equiv="refresh" content="0;url=http://localhost/app/resultado.php">';

}
else
{
   // a opção escolhida
   echo $perfil[ key( array_slice( $resposta, 0, 1 ) ) ];
}

?>

 

e na página resultado, puxei os resultados do array.

<?php 
session_start();
$gabi = $_SESSION['result'];
var_dump($gabi);

include('Resp'.$gabi[0].'.php');
include('Resp'.$gabi[1].'.php');


?>

 

Obrigada Carlos, você me ajudou muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que conseguiu :grin:

 

Mais uma dica, prefira utilizar header para dar um refresh na página.

header( 'refresh:0; url="http://localhost/app/resultado.php"' );

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

No localhost ele roda direitinho.. quando subi no servidor está dando erro.

 

Parse error: syntax error, unexpected T_FUNCTION in /home/gabinerds/gabitardivo.com/app/soma.php on line 24

 

não estou achando erro de jeito nenhum :(

 

o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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