JS parseInt() 与 PHP intval()、(int)数字转换函数比较

文章作者:中山市飞娥软件工作室「Feiesoft.com」  浏览次数:11042 次  更新日期:2013-10-27

<script type="text/javascript">

 //parseInt

 //原型:parseInt(variable[,radix])

 //功能:函数将 variable 按 radix 进制转换成十进制数字类型

 var a = [];

 a.push(parseInt("娥"));   //NaN

 a.push(parseInt("2009"));  //2009

 a.push(parseInt("2010.10")); //2010

 a.push(parseInt("2011.10.01")); //2011

 a.push(parseInt("2012"));  //2012

 a.push(parseInt("-2013年")); //-2013

 a.push(parseInt("0x100"));  //256

 a.push(parseInt("100",16));  //256

 a.push(parseInt("100",10));  //100

 a.push(parseInt("100",8));  //64

 a.push(parseInt("100",2));  //4

 a.push(parseInt("-2009年")); //-2009

 a.push(parseInt(true));   //NaN

 a.push(parseInt(false));  //NaN

 a.push(parseInt([99,100]));  //99 - 其实是将 "99,100"串转换成数字

 a.push(parseInt([]));  //NaN

 a.push(parseInt([0,999]));  //0 - 其实是将 "0,999"串转换成数字

 //a.push(parseInt({3.14}));  //非法应用

 document.write(a.join(","));

 //Thank you!

</script>

<p>与PHP的转换数字函数比较</p>

<?php

 //--------------------------------------------------------------------

 $a = array();//定义一个数组

 // $a[] = 2009; //十进制数

 // $a[] = -2009; //负数

 // $a[] = 0123; //八进制数 (等于十进制 83=1*8^2 + 2*8^1 + 3*8^0)

 // $a[] = 0x123; //十六进制数 (等于十进制 291=1*16^2 + 2*16^1 + 3*16^0)

 //--------------------------------------------------------------------

 //原型:int intval ( mixed $var [, int $base ] )

 //功能:通过使用特定的进制转换(默认是十进制),返回变量 var 的 integer 数值。var 可以是任何标量类型。intval() 不能用于 array 或 object。

 //说明:除非 var 参数是字符串,否则 intval() 的 base 参数不会有效果。

 $a[] = intval("娥");  //int 0

 $a[] = intval("2009");  //2009

 $a[] = intval("2010.10"); //2010

 $a[] = intval("2011.10.01");//2011

 $a[] = intval("2012年"); //2012

 $a[] = intval("-2013年"); //-2013

 $a[] = intval("0x100");  //0 - 比较 JS 的a.push(parseInt("0x100"));//256

 $a[] = intval("100",16); //256

 $a[] = intval("100",10); //100

 $a[] = intval("100",8);  //64

 $a[] = intval("100",2);  //4

 $a[] = intval("-2009年"); //-2009

 $a[] = intval(true);  //1 - 比较 JS 的 parseInt(true); //NaN

 $a[] = intval(false);  //0 - 比较 JS 的 parseInt(false);//NaN

 $a[] = intval(array(99,100)); //1 - 其实是将 array(99,100)转换成true后转换成数字- 比较 JS 的 parseInt([99,100]);//99

 $a[] = intval(array());  //0

 $a[] = intval(array(0,999)); //1

 echo implode(',',$a);

 echo "<hr>";

 //--------------------------------------------------------------------

 $b = array();

 $b[] = (int)("娥");  //int 0

 $b[] = (int)("2009");  //2009

 $b[] = (int)("2010.10"); //2010

 $b[] = (int)("2011.10.01");//2011

 $b[] = (int)("2012年"); //2012

 $b[] = (int)("-2013年"); //-2013

 $b[] = (int)("0x100");  //0 - 比较 JS 的a.push(parseInt("0x100"));//256

 $b[] = (int)(true);  //1 - 比较 JS 的 parseInt(true); //NaN

 $b[] = (int)(false);  //0 - 比较 JS 的 parseInt(false);//NaN

 $b[] = (int)(array(99,100)); //1 - 其实是将 array(99,100)转换成true后转换成数字- 比较 JS 的 parseInt([99,100]);//99

 $b[] = (int)(array());  //0

 $b[] = (int)(array(0,999)); //1

 echo implode(',',$b);