刨根问底儿 -- intVal($str) 跟 (int) $str 的运算结果有什么区别
2013-07-11 18:28
387 查看
intVal($str) 跟 (int) $str 都是把其他类型的变量转化为int型变量的方式,这么多年来我一直森森滴怀疑它们的运算结果在某些条件下会有区别。对于我的疑问,文档里也没有多说(或者我没找到),还是做个实验验证一下吧。
除了intVal函数的第二个参数可以指定$str字符串的进制形式外,对于普通的10进制数字型字符,这两种方式有什么样的区别呢?
小实验:
输出结果:
实验分析:输出的结果有两个值得注意的地方,第一,他们的结果完全一致;第二,非空会被转化为1,空会被转为0。
实验结论:
输出结果没啥区别,但intval()毕竟是要有函数调用的,所以相比较而言会慢那么一丢丢。
课外题:
改成
试一下,会有什么惊喜?!
另外,举一反三,其他的类型转换方式会不会有相同的答案呢?试一下吧!
除了intVal函数的第二个参数可以指定$str字符串的进制形式外,对于普通的10进制数字型字符,这两种方式有什么样的区别呢?
小实验:
$arr = array( '$a' => 19, '$b' => 19.99, '$c' => '19.99', '$d' => '', '$d' => 'sfsdf', '$f' => '0x20', '$e' => array('19.99') ); foreach ($arr as $k => $v){ $v = intval($v); echo "intval({$v}) is :" , var_dump($v) , PHP_EOL; } echo '-----------------------', PHP_EOL; foreach ($arr as $k => $v){ $v = (int)($v); echo "intval({$v}) is :" , var_dump($v) , PHP_EOL; } die();
输出结果:
intval(19) is :int(19) intval(19) is :int(19) intval(19) is :int(19) intval(0) is :int(0) intval(0) is :int(0) intval(1) is :int(1) ----------------------- intval(19) is :int(19) intval(19) is :int(19) intval(19) is :int(19) intval(0) is :int(0) intval(0) is :int(0) intval(1) is :int(1)
实验分析:输出的结果有两个值得注意的地方,第一,他们的结果完全一致;第二,非空会被转化为1,空会被转为0。
实验结论:
输出结果没啥区别,但intval()毕竟是要有函数调用的,所以相比较而言会慢那么一丢丢。
课外题:
$v = intval($v);
改成
$v = intval($v * 100);
试一下,会有什么惊喜?!
另外,举一反三,其他的类型转换方式会不会有相同的答案呢?试一下吧!
相关文章推荐
- 刨根问底儿 -- intVal($str) 跟 (int) $str 的运算结果有什么区别
- Java的Integer和int有什么区别
- 第2章 Java编程基础——FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?
- int (*a)[10] 和 int *a[10] 什么区别
- [zz]int *p=NULL和*p=NULL有什么区别?
- Convert.ToInt32和int.Parse有什么区别?
- int *p=NULL和*p= NULL有什么区别
- int 和 Integer 有什么区别
- int 和 Integer 有什么区别?
- 在函数体内声明[1] char *str=”abc”;和[2] char str[]={‘a’,’b’,’c’}有什么区别
- Integer与int有什么区别?
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- mysql int(1) 与 tinyint(1) 有什么区别?
- Integer.parseInt()和Integer.valueOf()有什么区别
- Java int和Integer有什么区别
- int 和 Integer 有什么区别?
- mysql 中int和integer有什么区别
- PHP中(int)与intval()的区别
- C#中(int)a和Convert.ToInt32(a)有什么区别
- Integer.parseInt()和Integer.valueOf()有什么区别