字符串转化作数字?

WBOY
Release: 2016-06-13 10:59:05
Original
850 people have browsed it

字符串转化为数字???
今天遇到个比较奇怪的现象,很可能是我储备还不够吧,包含引号的数字的字符串转化为数字时出现了问题

<br />"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"<br />
Copy after login

上面的为一段数据,接下来操作
<br />$arr = '"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"';<br />$arr = explode(',',$arr);<br />print_r($arr);<br />
Copy after login

打印
<br />Array<br />(<br />    [0] => "1000"<br />    [1] => "902865066306"<br />    [2] => "02865066306"<br />    [3] => "SIP Phone"<br />    [4] => "IP Trunk"<br />    [5] => ""<br />    [6] => "trunk20"<br />    [7] => "ON2OFF"<br />    [8] => "1333230069"<br />    [9] => "1333230072"<br />    [10] => "1333230134"<br />    [11] => "65"<br />    [12] => "62"<br />    [13] => "Connected"<br />)<br />
Copy after login

我想把数组里的第九个拿出来来和其他的数据比较,平常把引号包围的字符串转为数字时就是在后面加个0就ok了,可是,今天不一样了
<br />echo $arr[8] + 0; //结果为0<br />
Copy after login

我就纳闷了,怎么会为0呢,$arr[8]明明有值啊,于是我又测试了下
<br />$num = "1333230069";<br />echo $num+0;//1333230069<br />
Copy after login

弄了好久没明白怎么回事,后来就用了两个办法解决了,一个是用正则把数字提出来,另一个是一开始就把字符串里的双引号全都替换为空。

可是疑惑还没有解决,啰嗦到现在,就是想问问大大们,为什么上面的做法会出现0的结果,而不是想要的数字。

------最佳解决方案--------------------
var_dump($arr[8]); //string(12) ""1333230069""
var_dump($num); //string(10) "1333230069"

这样看就清楚了,将 $arr[8] 的首尾双引号去掉后再运算就对了。
------其他解决方案--------------------
没必要那么麻烦吧?
$arr = '"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"';<br />$t = json_decode("[$arr]");<br />print_r($t);
Copy after login
Array
(
    [0] => 1000
    [1] => 902865066306
    [2] => 02865066306
    [3] => SIP Phone
    [4] => IP Trunk
    [5] => 
    [6] => trunk20
    [7] => ON2OFF
    [8] => 1333230069
    [9] => 1333230072
    [10] => 1333230134
    [11] => 65
    [12] => 62
    [13] => Connected
)

也可以
$t = array_map( function($s) { return trim($s,'"'); }, explode(',', $arr)); // >= php 5.3
也可以
$t = array_map( create_function('$s', 'return trim($s,\'"\');'), explode(',', $arr)); // >= php 4

直接就处理成可用的数组
------其他解决方案--------------------
对于你的疑问
不错
$num = "1333230069";
echo $num+0;//1333230069

但是 $arr[8] 是什么呢?

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template