php中的简单问题

时间:2010-01-16 08:50:30

标签: php

<?php 

$n1=$_POST['mont'];
echo $n1;
if($n1==07)
    echo "numeric";
if($n1=="07")
    echo "string";
if($n1==08)
    echo "numeric";

if($n1=="08")
    echo "string";
?>

如果$ _POST [“mont”]是07  输出是字符串和整数 但如果$ _POST [“mont”]是08 输出只是字符串

可能是什么原因

4 个答案:

答案 0 :(得分:1)

数字前导零表示八进制格式。八进制只有7,所以08无效。

答案 1 :(得分:1)

两个原因:

  1. PHP是弱类型的,这意味着包含数字的字符串与数字之间没有区别。 “5”== 5

  2. 以0开头的数字被视为八进制。 “08”不是有效的八进制数,因此它只能被视为字符串。

答案 2 :(得分:1)

php的一致性不是很棒吗?同样的问题也发生在JavaScript中。具有前导零的字符串被转换为八进制(基数为8)的数字,因此“010”将等于8,但不是“08”。

答案 3 :(得分:0)

这是因为PHP中前面带有'0'的任何数字都被读作八进制数,所以'07'实际上意味着基数8中的7,而不是基数10(尽管它们的数量相同)。因此,'08'被视为八进制无效,不会被视为数字。