字符串转化作数字?

WBOY
リリース: 2016-06-13 10:59:05
オリジナル
881 人が閲覧しました

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

<br />"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"<br />
ログイン後にコピー

上面的为一段数据,接下来操作
<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 />
ログイン後にコピー

打印
<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 />
ログイン後にコピー

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

我就纳闷了,怎么会为0呢,$arr[8]明明有值啊,于是我又测试了下
<br />$num = "1333230069";<br />echo $num+0;//1333230069<br />
ログイン後にコピー

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

可是疑惑还没有解决,啰嗦到现在,就是想问问大大们,为什么上面的做法会出现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);
ログイン後にコピー
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] 是什么呢?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート