Следующая функция свела меня с ума. Как же 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 сразу же, но ... Мне все еще очень любопытно выяснить, почему php считает, что 100x = 100 равны.