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

Bug no PHP Switch


Guest --Tiago --

Pergunta

Guest --Tiago --

Galera e o seguinte descobri acho q um bug no php q é o seguinte

não sei se alguém já descobriu antes mas e o seguinte

tenho este codigo

$produto = 08;

switch($produto) {

case 08 : echo "Produto 08"; break;

case 09 : echo "Produto 09"; break;

}

no momento q deixo a variavel $produto = 08 e rodo o codigo ele imprime Produto 08 quando mudo a variavel para 09 ele continua imprimindo o produto 08...

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Isso não é um bug... exemplo:

<?php
$num1 = 01;
$num2 = 02;
$num3 = 03;
$num4 = 04;
$num5 = 05;
$num6 = 06;
$num7 = 07;
$num8 = 08;
$num9 = 09;
echo $num1.' - '.$num2.' - '.$num3.' - '.$num4.' - '.$num5.' - '.$num6.' - '.$num7.' - '.$num8.' - '.$num9;
?>

Não me lembro a explicação técnica pra isso, mas se você quer que o 08 seja interpretado como 08, coloque entre apóstrofes ou aspas...

Você também pode formatar a saída (preenchendo com zeros a esquerda) com a função str_pad ou com sprintf (ai você poderia transformar 8 em 08).

Link para o comentário
Compartilhar em outros sites

  • 0

Só seria interpretado como string se estivesse dentro de apóstrofes/aspas, e ai sim, o 08 "ficaria" 08 e não 0...

EDIT:

Achei a explicação:

Isso não é bug. Quando você começa um número com 0, o PHP entende que você está entrando um número em octal, ou seja, base 8. Como na base 8 só temos algarismos de 0 a 7, qualquer número que comece com 0 e que tenha 8 ou 9 depois não vai ser interpretado corretamente.

Um dos pontos onde se costuma usar o octal no PHP é quando se chama a função chmod() pra setar permissões de arquivos/diretórios. O parâmetro usualmente vem com um 0 antes (ex: 0644 ou 0755).

Da mesma forma, se você iniciar um número com "0x", o PHP vai entender que se trata de um número em hexadecimal. Assim, por exemplo 0xFF (em hexa) vale 255 (em decimal).

Crédito a Bruno Lustosa

Mensagem original.

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
      652,1k
×
×
  • Criar Novo...