当我从数据库中获取数据时,即使它具有数字值,结果也是一个字符串.这就是我的意思:
// An integer
$int=10;
if(is_int($int)) // Returns true
...
// A string
$int='10';
if(is_int($int)) // Returns false
...
Run Code Online (Sandbox Code Playgroud)
我希望这两个都返回真实.
我多次遇到这个问题,现在我正在考虑以下问题的最佳解决方案:
public function dumpID($id){
var_dump($id);
}
dump("5");
Run Code Online (Sandbox Code Playgroud)
会转储string "5".数值通常作为字符串赋予函数.我经常在Symfony 2中面对这个问题,但在其他原生的PHP项目中也是如此.
在这种情况下,检查此ID是否为数字将失败
public function dumpID($id){
if(is_int($id)){
var_dump($id);
} else { // throw error }
}
dump("5"); // Would fail
Run Code Online (Sandbox Code Playgroud)
所以你可以说casting to int would solve this problem.
public function dumpID($id){
$id = (int)$id;
if(is_int($id)){
var_dump($id);
} else { // throw error }
}
dump("5"); // Would var_dump the $id
Run Code Online (Sandbox Code Playgroud)
但由于PHP的以下行为,这是不正确的.
$string = "test";
$string = (int)$string;
var_dump($string); // Would give out the integer value 0
Run Code Online (Sandbox Code Playgroud)
所以
public function …Run Code Online (Sandbox Code Playgroud)