字符串数字加一 php,字符串转化作数字?

字符串转化为数字???

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

"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"

上面的为一段数据,接下来操作

$arr = '"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"';

$arr = explode(',',$arr);

print_r($arr);

打印

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"

)

我想把数组里的第九个拿出来来和其他的数据比较,平常把引号包围的字符串转为数字时就是在后面加个0就ok了,可是,今天不一样了

echo $arr[8] + 0; //结果为0

我就纳闷了,怎么会为0呢,$arr[8]明明有值啊,于是我又测试了下

$num = "1333230069";

echo $num+0;//1333230069

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

可是疑惑还没有解决,啰嗦到现在,就是想问问大大们,为什么上面的做法会出现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"';

$t = json_decode("[$arr]");

print_r($t);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] 是什么呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值