простая проблема в php - PullRequest
       1

простая проблема в php

0 голосов
/ 16 января 2010
<?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 ]

1 голос
/ 16 января 2010

Разве согласованность php не фантастическая? Та же проблема возникает и в JavaScript. Строка с начальным нулем приводится как восьмеричное (основание-8) число, поэтому «010» будет равно 8, но не «08».

1 голос
/ 16 января 2010

Две причины:

  1. PHP слабо типизирован, что означает, что нет разницы между строкой, содержащей число, и просто числом. "5" == 5

  2. Числа, начинающиеся с 0, считаются восьмеричными. «08» не является действительным восьмеричным числом, поэтому его можно рассматривать только как строку.

1 голос
/ 16 января 2010

Начальные нули на числах указывают восьмеричный формат. Восьмеричное число поднимается только до 7, поэтому 08 не будет действительным.

0 голосов
/ 16 января 2010

Это потому, что любое число, которому предшествует «0» в PHP, читается как восьмеричное число, поэтому «07» действительно означает 7 в 8, а не 10 (хотя они одинаковые). Поэтому «08» считается неверным как восьмеричное и не читается как число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...