2013-06-11 57 views
-3

我在PHP中有一個$線像下面你怎麼把一個行到一個數組在PHP

33 0 0 51037280 396822 15 16 0 0 0 0 20907 143197 57377 27 12 51 10 7.33 45.8 17:07:31 

我嘗試創建和數組,並把由空間分隔的每個值這個數組是這樣的:

$parts=explode(" ", $line) 

應該有20個索引,這$行上有21個coluns。但是當我這樣做:

$size=sizeof($parts) 

echo $ size returns 58,這怎麼可能。有沒有更好的方法插入到$行中的項目到數組?看起來像有不規則的值之間的空格。當我這樣做:

的print_r($部分)

我得到如下:

[0] => [1] => 33 [2] => [3] => [4] => 0 [5] => [6] => [7] => 0 [8] => [9] => [10] => 51037280 [11] => [12] => [13] => [14] => [15] => 396822 [16] => [17] => [18] => [19] => 15 [20] => [21] => [22] => [23] => 16 [24] => [25] => [26] => [27] => [28] => 0 [29] => [30] => [31] => [32] => [33] => 0 [34] => [35] => [36] => [37] => [38] => 0 [39] => [40] => [41] => [42] => [43] => [44] => 0 [45] => 20907 [46] => 143197 [47] => 57377 [48] => 27 [49] => 12 [50] => 51 [51] => 10 [52] => [53] => 7.33 [54] => [55] => 45.8 [56] => 17:07:31) 

我怎麼會忽略的值之間的空格數和每個值存儲爲一個數組值PHP的?

+0

var_dump($ parts)'show?如果真的有21列,你會得到21的數量,所以看看你實際得到什麼。 –

+0

您可能想檢查一下您的代碼是否真實地再現了您的問題:'echo(sizeof(explode(「」,「,35 0 0 51020880 462460 6 23 0 0 0 0 21770 142334 67212 31 12 46 11 8.13 50.8 16:07:29 58" ))); #22' – meagar

+0

您發佈的代碼,工作完好,我在http://writecodeonline.com/php/中測試,並且其工作完美....返回22 – KyleK

回答

1

確保只有一個元素之間的空間,有沒有空格字符串的開頭或結尾,然後拆分字符串:

$line = trim($line); 
$line = preg_replace('/\s\s+/', ' ', $line); 
$parts=explode(" ", $line) 
+0

當你的建議和執行print_r($ parts),我得到這個:Array([0] => [1] => 31 [2] => 0 [3] => 0 [4] => 51012972 [5 ] => 397817 [6] => 14 [7] => 26 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 18863 [13] = > 146092 [14] => 56330 [15] => 23 [16] => 11 [17] => 56 [18] => 10 [19] => 6.50 [20] => 40.6 [21] => 17 :22:31) – user1471980

+0

@ user1471980我已經更新了示例以避免字符串開頭或結尾的空格 – Ander2

+0

我不得不使用trim()函數刪除開始和訓練空格。 – user1471980

0

可能有多個空間在一起。

嘗試

$parts = preg_split('/\s+/', $line); 
+0

抱歉dexlexic :) – Orangepill

+0

'\ s +'而不是'\ s \ s *'? – Barmar

+0

我直接從他的帖子中複製了這一行,它的工作原樣,返回22,.....所以雖然這可能是問題,如果他提供的數據是真實的....那麼它不是 – KyleK

0

可以過濾掉以後空字符串,但更容易將做到這一點:

preg_split('/ +/',$string,-1, PREG_SPLIT_NO_EMPTY); 
+0

@KyleK:看看他在'print_r'中的數據。雖然他可能從web上下文複製/粘貼輸入,使所有空格一起運行,但print_r清楚地顯示有多個空格。 – Wrikken

相關問題