Следующий funciton загнал меня в орехи. Как на земле 100x может быть равно 100, а затем 100x сообщается как целое число?
Для жизни меня я не могу понять. Вы можете скопировать и вставить все это и посмотреть его сами.
Мне не хватает простой точки где-то здесь, помогите мне с парнями.не может определить, является ли строка в настоящее время целым числом или нет.
function blp_int($val) {
$orgval = $val;
$num = (int)$val;
echo "<li><font color=red>val: ". $val . " is being checked to see if it's an integer or not";
echo "<li><font color=red>orgval: ". $orgval ;
echo "<li><font color=red>num: ". $num ;
if ($orgval==$num) {
echo "<li><font color=red><b>YES IT IS! the [{$orgval}] is equal to [{$num}]</b>";
return true;
}
return false;
}
if (blp_int("100"))
{
echo "<h1>100 is an integer!</h1>";
}
else
{
echo "<h1>100 is NOT an integer!</h1>";
}
if (blp_int("100x"))
{
echo "<h1>100x is an integer!</h1>";
}
else
{
echo "<h1>100x is NOT an integer!</h1>";
}
приведенный выше код при запуске возвращает следующее:
val: 100 is being checked to see if it's an integer or not
orgval: 100
num: 100
YES IT IS. the [100] is equal to [100]
100 is an integer!
val: 100x is being checked to see if it's an integer or not
orgval: 100x
num: 100
YES IT IS. the [100x] is equal to [100]
100x is an integer!
я могу исправить ситуацию, добавив следующие биты
if (!is_numeric($val))
{
return false;
}
к верхней части функции blp_int сразу же, но .. Я все еще очень интересно узнать, почему на earth php считает 100x = 100 равными.
'is_int',' ctype_digit', 'filter_var ($ string, FILTER_VALIDATE_INT)', последний может запретить/разрешить hex и восьмеричные ints, если вы хотите. Если вы хотите использовать свой код, case to int, но затем вернитесь к строке: 'if ((string) $ orgval == (string) (int) $ orgval)' – Wrikken
Ваша функция использует 'echo' и' return', попробуйте не писать функцию таким образом. какой результат?Я имею в виду то, что вы видите на экране, когда 'echo' переменные перед int casting и после? –