• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

lopes_andre

Porque é que este código não funciona? "Switch"

16 mensagens neste tópico

Viva, estou a usar o wamp com PHP5, este código em baixo não me funciona, porque??

<?php

$mes = DATE("m");


switch ($mes) {
    case 01:
        $meses = "Janeiro";
        
  case 02:
        $meses = "Fevereiro";
        
  case 03:
        $meses = "Março";
        
  case 04:
        $meses = "Abril";
        		
  case 05:
        $meses = "Maio";
        	
  case 06:
        $meses = "Junho";
        	
 case 07:
        $meses = "Julho";
        
 case 08:
        $meses = "Agosto";
        	
 case 09:
        $meses = "Setembro";
        
 case 10:
        $meses = "Outubro";
        
 case 11:
        $meses = "Novembro";
        				
   case 12:
        $meses = "Dezembro";
        
}


echo $meses;

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<?php

$mes = DATE("m");


switch ($mes) {
    case 01:
        $meses = "Janeiro";break:
        
  case 02:
        $meses = "Fevereiro";break;
        
  case 03:
        $meses = "Março";break;
        
  case 04:
        $meses = "Abril";break;
        		
  case 05:
        $meses = "Maio";break;
        	
  case 06:
        $meses = "Junho";break;
        	
 case 07:
        $meses = "Julho";break;
        
 case 08:
        $meses = "Agosto";break;
        	
 case 09:
        $meses = "Setembro";break;
        
 case 10:
        $meses = "Outubro";break;
        
 case 11:
        $meses = "Novembro";break;
        				
   case 12:
        $meses = "Dezembro";
        
}


echo $meses;

?>

Tenta assim penso que é esse o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tb já usei "breaks", continua a não funcionar... será de ser PHP5? Ou será alguma configuração do Apache?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas não funciona porquê ??

O que dá errado ?? tens de explicar!

Uma coisa parva mete lá "01" ao invés de um simples 01

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era mesmo isso faltavam as aspas... mas o "  $mes = DATE("m");  " não deveria retornar um numero?

Já funciona, desde já obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, qual o pacote PHP + MySQL que aconselham a usar no windows? Estou a usar o Wamp5, mas estou a assistir a um video curso de PHP e lá o professor corria este mesmo código sem colocar aspas. Será que isto tem a ver com a configuração do Apache?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nao.... isso não tem a ver com as configurações do apache. Isso tem a ver com a linguagem em si. Eu acho que o teu professor pos la o código sem aspas mas nao o testou. Porque estamos a falar ca conversão de um tipo de dados dado o uso de determinada sintaxe. Basicamente a especificação da linguagem teria que mudar, o que não me parece que tenha sido o caso.

No windows eu aconselho o xamp, preferencialmente a versão lite. Porquê? por razão nenhuma em especial, porque me habituei a usa-lo ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse é um dos problemas das linguagens tipadas dinamicamente e que não gosto muito ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Voces começam logo a  falar mal e nem sabem do que tão a falar xD

O problema dele não era um mau cast das variáveis (strings vs int), mas sim por ter "0" antes dos meses..

<?php

$mes = DATE("m");

switch ($mes) {
    case 1:
        $meses = "Janeiro";break;
        
  case 2:
        $meses = "Fevereiro";break;
        
  case 3:
        $meses = "Março";break;
        
  case 4:
        $meses = "Abril";break;
        		
  case 5:
        $meses = "Maio";break;
        	
  case 6:
        $meses = "Junho";break;
        	
 case 7:
        $meses = "Julho";break;
        
 case 8:
        $meses = "Agosto";break;
        	
 case 9:
        $meses = "Setembro";break;
        
 case 10:
        $meses = "Outubro";break;
        
 case 11:
        $meses = "Novembro";break;
        				
   case 12:
        $meses = "Dezembro";
        
}


echo $meses;

?>

Assim já funciona ; ) Sem ser necessário aspas, mas fica aqui um truque que fica mais simples ainda o teu código ;)

<?php

$mes = DATE("n"); // usa "n" em vez de "m";

$meses = array(1 => "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");

echo $meses[ $mes ];

?>

Cumprimentos  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hurray ao sistema de tipos dinâmico....  :nono:

Não tenho culpa que não saibam ler a documentação (excelente e em abundância). ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desde já obrigado pelas ajudas.

<?php

$mes = DATE("n"); // usa "n" em vez de "m";

$meses = array(1 => "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");

echo $meses[ $mes ];

?>

Neste código só não percebo o que faz o " 1 => ".

Se alguem me pudesse dar uma luz, agradecia.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MX

O que disseste é o mesmo que nós dissémos. Um zero à força o php a fazer uma comparação de strings. O php ceonverterá o inteiro para string, mas essa string não tem um zero à frente. É efectivamente um problema de tipo de dados.

lopes_andre

o 1=> serve para atribuires o literal, variavel ou expressão que vem a seguir, ao elemento 1.

Neste caso o MX usou-o para que o array começa no elemento 1 e não no zero.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acrescentar só que o PHP define depois os índices do array automaticamente, Janeiro é 1, então Fevereiro vai ser 2, .. etc.

Se fizeres: array( 5 => Primeiro, Segundo, Terceiro. ..)

Vais obter:

5: Primeiro

6: Segundo

7: ....

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para colocarem dúvidas existe uma secção interna em cada àrea denominada Dúvidas e Ajudas.

Por favor utilizem essa secção de forma a poupar trabalho aos Moderadores para moverem tópicos.

Obrigado

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora