Ir para o conteúdo
lopes_andre

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

Mensagens Recomendadas

lopes_andre    0
lopes_andre

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;

?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

<?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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lopes_andre    0
lopes_andre

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

Já funciona, desde já obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lopes_andre    0
lopes_andre

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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 ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MX+    0
MX+

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  ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

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). ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lopes_andre    0
lopes_andre

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
MX+    0
MX+

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade