刨根问底儿 -- intVal($str) 跟 (int) $str 的运算结果有什么区别
2013-07-10 20:10
405 查看
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 的运算结果有什么区别
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- java中byte是什么类型,和int有什么区别
- "int?" 是什么类型?和"int"有何区别
- int 和 Integer 有什么区别
- Java面试题:int和Integer有什么区别
- php下intval()和(int)转换使用与区别
- php下intval()和(int)转换使用与区别
- Cpp:int_tmain()和main()有什么区别
- 仪表放大器与运算放大器的区别是什么?
- JavaScript中把赋值运算作为判断条件是什么结果?
- 4.1.3,int *p = NULL 和*p = NULL 有什么区别?
- java中int和Integer什么区别
- 25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果
- c++ const int 和int 有什么区别,const的作用是什么。【by徐玉丽】
- 问题:HttpContext.Current.Session;结果:Session与HttpContext.Current.Session到底有什么区别呢?
- Java的Integer和int有什么区别
- "int i=1" "int i=new int() "和“String str = "a";” “String str = new String("a")”区别以及c#值类型和引用类型
- java里int和Integer什么区别
- String str=new String("a")和String str = "a"有什么区别?