2010-03-19 201 views
3

我如何爆炸的這串'||25||34||73||94||116||128' 我需要有這樣的爆炸字符串在PHP

array (
0 => '25', 
1 => '34', 
2 => '73', 
3 => '94', 
4 => '116', 
5 => '128' 
) 

一個陣列爆炸(「||」,$陣列);我沒有工作,我得到這個數組

array (
0 => '', 
1 => '25', 
2 => '34', 
3 => '73', 
4 => '94', 
5 => '116', 
6 => '128', 
) 

回答

12
$array = explode('||', trim($string, '|')); 
+0

感謝這對我有用 – streetparade 2010-03-19 12:00:30

0

你可以這樣做:

explode('||',substr($str,2)); 
5

解決辦法,尤其是如果你能在串中間有空值,可能是使用preg_split及其PREG_SPLIT_NO_EMPTY標誌

$str = '||25||34||73||94||116||128'; 
$array = preg_split('/\|\|/', $str, -1, PREG_SPLIT_NO_EMPTY); 
var_dump($array); 

會給你:

array 
    0 => string '25' (length=2) 
    1 => string '34' (length=2) 
    2 => string '73' (length=2) 
    3 => string '94' (length=2) 
    4 => string '116' (length=3) 
    5 => string '128' (length=3) 


如果你再也不用在字符串中間空值,不過,使用explode會更快,即使你刪除||在調用它之前的字符串的開始和結束。

2
$str='||25||34||73||94||116||128'; 
$s = array_filter(explode("||",$str),is_numeric); 
print_r($s); 

輸出

$ php test.php 
Array 
(
    [1] => 25 
    [2] => 34 
    [3] => 73 
    [4] => 94 
    [5] => 116 
    [6] => 128 
) 
+0

如果值爲'0'會怎麼樣? – Gumbo 2010-03-19 11:49:44

0

除了已經提到的解決方案,你也可以過濾掉空值算賬:

$arr = array_filter(explode("||", $str), function($val) { return trim($val) === ""; }); 

此示例使用anonymous function,你將需要更換,如果你沒有使用PHP 5.3或更高版本,使用create_function

$arr = array_filter(explode("||", $str), create_function('$val', 'return trim($val) === "";')); 

或者預定義的功能:

function isEmptyString($str) { 
    return trim($str) === ""; 
} 
$arr = array_filter(explode("||", $str), "isEmptyString"); 
1

由於one of your previous questions是如何存儲和在MySQL更新這樣的字符串...讓我們假設此時的你未來的任務之一是,如果要找出某些值在此數組/字符串中,或​​者查找/計算在此數組中具有特定值的所有記錄。
在這種情況下,您可能現在想開始normalizing your table