(php的弱类型导致的小问题)某变量可能是数字或非数字(对象、字符串、json等)时,应该如何去判断
2012-11-18 16:18
1026 查看
注意:php中变量可能是数字或非数字(对象、字符串等)时,应该注意:
由于php的弱类型,导致其变量判断很复杂,并且稍有不慎即会出错,因此php强大的字符处理函数库便成为phper的必修课。
例子(1):
输出:0 true
if($result == 1) 使php强制将$result按数字处理并判断。
php将字符串强制转化为数字时遵循以下原则:字符串以数字开头时,直接转化为此数字;如果非数字开头,则转化为0。故此处,"$result == 1"为真。
如:
if($result) 使php强制将$result按boolean类型处理并判断。
php将字符串强制转化为boolean时遵循以下原则:字符串=“0”,或者字符串=“”,则false;否则,为true
例子(2):
输出:-1 true
if($result) 使php强制将$result按boolean类型处理并判断。
php将数字强制转化为boolean时遵循以下原则:数字=0,则false;否则,为true。
结论:如果$result 可能是 字符串又可能是数字时,应该注意判断方法和顺序。
结合使用php变量处理函数is_numeric()、is_string()等。
参考例子:
php变量处理函数库官网:http://cn2.php.net/manual/zh/book.var.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
相关文章推荐
- (php的弱类型导致的小问题)某变量可能是数字或非数字(对象、字符串、json等)时,应该如何去判断
- Ajax请求php返回json对象数据中包含有数字索引和字符串索引,在for in循环中取出数据的顺序问题
- JS 中如何判断字符串类型的数字
- JavaScript中如何判断变量是数组、函数或是对象类型
- c++中怎么判断一个string类型的字符串变量是否为数字?
- JS 中如何判断字符串类型的数字
- Javascript如何判断一个变量是数字类型?
- 判断一个值是否在数组里,可以检测数字,字符串,json对象
- Java中关于Json对象类型和字符串类型之间互相转化的问题 .
- 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象。
- 关于如何将含有Date类型属性的对象转换成符合实际应用的Json字符串
- python如何判断对象是否为字符串或者其他类型
- JS 中如何判断字符串类型的数字
- 【问题-java-json】josn的发送与接收(全)解析json对象与字符串在js中的区别,以及后端spring该如何接收?
- 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象。
- JS 将变量 转化为字符串的方法, 适用于所有类型,数组, JSON对象,函数和基本类型等
- c++中怎么判断一个string类型的字符串变量是否为数字?
- php如何判断某变量的类型
- JS 中如何判断-字符串类型的数字
- php 如何判断一个字符串全部都是数字