注意:php中变量可能是数字或非数字(对象、字符串等)时,应该注意:
由于php的弱类型,导致其变量判断很复杂,并且稍有不慎即会出错,因此php强大的字符处理函数库便成为phper的必修课。
例子(1):
$result = "asd";
if($result == 0){ //“$result == 0”使php将$result按数字处理并作出判断
echo "0";
}
if($result == 1){
echo "1";
}
if($result){ //“$result”使php将$result按boolean处理并作出判断
echo "true";
}
if(!$result){
echo "false";
}
输出:0 true
if($result == 1) 使php强制将$result按数字处理并判断。
php将字符串强制转化为数字时遵循以下原则:字符串以数字开头时,直接转化为此数字;如果非数字开头,则转化为0。故此处,"$result == 1"为真。
如:
$test = "1 and 1 is 2";
echo $test + 1;
输出:2
$test = "you know that 1 and 1 is 2";
echo $test + 1;
输出:1
if($result) 使php强制将$result按boolean类型处理并判断。
php将字符串强制转化为boolean时遵循以下原则:字符串=“0”,或者字符串=“”,则false;否则,为true
例子(2):
$result = -1;
if($result == -1){
echo "-1";
}
if($result == 0){
echo "0";
}
if($result){
echo "true";
}
if(!$result){
echo "false";
}
输出:-1 true
if($result) 使php强制将$result按boolean类型处理并判断。php将数字强制转化为boolean时遵循以下原则:数字=0,则false;否则,为true。
结论:如果$result 可能是 字符串又可能是数字时,应该注意判断方法和顺序。
结合使用php变量处理函数is_numeric()、is_string()等。
参考例子:
if(!is_numeric($result) && $result){
echo "字符串";
}
if(is_numeric($result) && $result == -1){
echo -1;
}
if(is_numeric($result) && $result == 0){
echo 0;
}
php变量处理函数库官网:http://cn2.php.net/manual/zh/book.var.php