Heim > Backend-Entwicklung > PHP-Tutorial > 字符串转化作数字?

字符串转化作数字?

WBOY
Freigeben: 2016-06-13 10:59:05
Original
877 Leute haben es durchsucht

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

<br />"1000","902865066306","02865066306","SIP Phone","IP Trunk","","trunk20","ON2OFF","1333230069","1333230072","1333230134","65","62","Connected"<br />
Nach dem Login kopieren

上面的为一段数据,接下来操作
<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 />
Nach dem Login kopieren

打印
<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 />
Nach dem Login kopieren

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

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

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

可是疑惑还没有解决,啰嗦到现在,就是想问问大大们,为什么上面的做法会出现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);
Nach dem Login kopieren
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] 是什么呢?

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage