<?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 输出只是字符串
可能是什么原因
答案 0 :(得分:1)
数字前导零表示八进制格式。八进制只有7,所以08无效。
答案 1 :(得分:1)
两个原因:
PHP是弱类型的,这意味着包含数字的字符串与数字之间没有区别。 “5”== 5
以0开头的数字被视为八进制。 “08”不是有效的八进制数,因此它只能被视为字符串。
答案 2 :(得分:1)
php的一致性不是很棒吗?同样的问题也发生在JavaScript中。具有前导零的字符串被转换为八进制(基数为8)的数字,因此“010”将等于8,但不是“08”。
答案 3 :(得分:0)
这是因为PHP中前面带有'0'的任何数字都被读作八进制数,所以'07'实际上意味着基数8中的7,而不是基数10(尽管它们的数量相同)。因此,'08'被视为八进制无效,不会被视为数字。