php settype()int总是返回1

时间:2011-10-27 23:08:42

标签: php types integer set

我从$_GET['category']获取变量。这总是应该是一个整数。所以当我设置我使用的变量时:

$category=settype($_GET['category'], "int");
// Also tried
$category=settype($_GET['category'], "integer");

但是,它总是返回1.它们是查询字符串中的数字,例如:

http://domain.com/example.php?category=57

当我echo $category时,它总是返回1.无论?category=背后有什么数字,我就不知道了。

任何帮助将不胜感激!谢谢!

4 个答案:

答案 0 :(得分:5)

settype 修改变量的类型。您正在使用它,好像它将返回一个新变量。

但是,如果类型更改成功,则settype返回true,否则返回false。您将看到结果1,因为这是字符串表示true。

您应该使用castingintval

$category = (int) $_GET['category']; // or ...
$category = intval($_GET['category']);

答案 1 :(得分:1)

  

settype成功时返回TRUE,失败时返回FALSE。

它不返回值,只返回设置类型是否成功。您的$_GET['category']变量现在是int。如果你想做一个返回值但仍然保持变量不变的强制转换,语法为:

$category = (int)$_GET['category'];

答案 2 :(得分:0)

请阅读settype()的文档。仅供参考,其返回值为bool

相反,尝试投射,例如

$category = (int) $_GET['category'];

答案 3 :(得分:0)

请正确阅读documentation

第一个参数是pass by reference。因此无需在另一个变量中设置返回值。

你只是喜欢,

$category = $_GET['category'];
settype($category, "integer");

感谢。