为啥我没有在 php 中将此数字作为整数

Posted

技术标签:

【中文标题】为啥我没有在 php 中将此数字作为整数【英文标题】:Why iam not getting this number as integer in php为什么我没有在 php 中将此数字作为整数 【发布时间】:2012-08-12 14:35:35 【问题描述】:

我只在用户输入整数值(no 字符串、浮点数等)时才尝试打印表格,但是这段代码不起作用让我现在缺少什么来获取整数值而不在前端使用 javascript .如果我错过了一些逻辑,请告诉我。

这是我的 php 代码 (index.php) --

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>table Data</title>
</head>

<body>

<table  border="1">
<form name="mytableform" id="mytableform" action="mytabledata.php" method="POST">
  <tr>
    <td >Enter any munber :&nbsp;</td>
    <td ><input type="text" name="mynumber" id="mynumber" />&nbsp;</td>
  </tr>
  <tr>
    <td>Enter limit :&nbsp;</td>
    <td><input name="limit" type="text" id="limit" />&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" value="Submit" name="submit" />&nbsp;</td>
    </tr>
 </form> 
</table>

</body>
</html>

我的 mytabledata.php 内容文件 --

<?php

$number = $_POST['mynumber'];
$limit = $_POST['limit'];

//var_dump($number);
//var_dump($limit);

if( is_int($number) )

    for($i=1;$i<=$limit;$i++)
    
    $p= $number * $i;
    echo $number." X ".$i." = "." ".$p.";";
    echo "<br />";
    

else
echo "Please check the type of data you are entering.";

【问题讨论】:

为什么不将给定的数字转换为 int?喜欢$number=(int)$_POST["mynumber"] @Sabin 如果我必须进行类型转换,那么在我的代码中使用 is_int 是没有用的.. @user1594368,然后使用is_numeric函数代替is_int进行检查 @BhuvanRikka 如果您输入 25 或任何数字,那么此代码将打印表格..但它不是..至少看看代码以获取逻辑而不是仅仅强调句子 @Sabin 即使这样也行不通,兄弟 【参考方案1】:

来自 HTTP 的输入($_POST$_GET 等)在 php 领域将始终为 stringtype。 如果您想验证该字符串是否可以解释为数字,您可以使用is_numeric 或Filter 库。

【讨论】:

【参考方案2】:

POST 中的值是字符串类型。要使用它,您可以这样做:

$number = intval( $_POST['mynumber'] );

【讨论】:

如果你想做的不仅仅是清理输入,你应该按照 complex857 的建议使用filter_var。在 cmets 部分有 an example 如何设置 min_rangemax_range 选项。 旁注:如果有人关心性能,使用(int)$_POST['mynumber']intval($_POST['mynumber']) 快得多。【参考方案3】:

问题是$_POST 值总是作为 ASCII 文本提交(即它们是字符串)。使用intval 函数将字符串转换为整数。

【讨论】:

【参考方案4】:

当我必须检查整数类型时,我通常使用下面提到的条件

if(is_numeric($val) && intval($val)==$val) 
/*Place your code here*/

【讨论】:

这是一个非常好的代码..一旦我获得 15 分,我肯定会投票 :)【参考方案5】:

$_POST 的值始终是字符串,不会自动转换为数字。

您要在脚本中使用的可能不是检查变量类型的is_int(),而是检查变量是否包含数值(无论是整数还是字符串)的is_numeric()

【讨论】:

【参考方案6】:

试试这个,

if(((int) $number) == $number)

    echo "is integer";

编辑:或者你可以像这样使用正则表达式

if(preg_match("/^\d+$/", $number))

    echo "is integer";

【讨论】:

【参考方案7】:

我会使用is_numeric 而不是is_int。 上面提到的答案也很好,但是 is_numeric 更好,因为它会立即返回 true 或 false。

 if( is_numeric($number) )

【讨论】:

以上是关于为啥我没有在 php 中将此数字作为整数的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的数组没有保存结果?

在PHP中将字符串[基本上是逗号分隔的数字]转换为整数的最佳方法[重复]

为啥 Oracle odbc 驱动程序没有为整数和数字类型提供 TYPE_NAME?

在C ++中将字符串的数字作为整数[重复]

在请求中将数字作为URL中的参数传递:PHP

为啥我不能在编译时将整数添加到泛型集合中,即使使用引用类型作为数字创建的泛型? [复制]