2012-11-26 41 views
-1

我從MySQL字符串以這種格式PHP的最簡單的方法,使陣列

1.name.2.name,3.name.8.name

我有這個

$ arr = split(「,」,$ str); $ count = count($ arr);

這將使2個數組,但我想它寫逐項

for ($i=0;$i<$count;$i++){ 
echo $arr[$i]; 
// when $i=0 here must be 1 name 2 name and when $i=1 3 name 8 name 
} 

這仍然是正確的,但現在我想內環寫值從$arr[$i],我需要多特以分割。可能嗎?

回答

3

你不需要任何環路

$string = "1.name.2.name,3.name.8.name"; 
$array = explode(",", $string); 
var_dump($array); 

輸出

array (size=2) 
    0 => string '1.name.2.name' (length=13) 
    1 => string '3.name.8.name' (length=13) 

如果你想打破它進一步

$array = array_map(function($v){return explode(".", $v); },$array); 
var_dump($array); 

輸出

array (size=2) 
    0 => 
    array (size=4) 
     0 => string '1' (length=1) 
     1 => string 'name' (length=4) 
     2 => string '2' (length=1) 
     3 => string 'name' (length=4) 
    1 => 
    array (size=4) 
     0 => string '3' (length=1) 
     1 => string 'name' (length=4) 
     2 => string '8' (length=1) 
     3 => string 'name' (length=4) 
+1

1。我真的沒有得到OP問題 – GBD

+0

,但我需要爆炸與迪特2陣列 – dontHaveName

+1

查看更新的答案。 – Baba

0

使用explode(),str_replace()拆分使用正則表達式以除去.

$string = "1.name.2.name,3.name.8.name"; 
$arr = explode(",", $string); 

for ($i=0;$i<count($arr);$i++){ 
echo str_replace("."," ",$arr[$i]);} 
+0

是的,這也是個好主意,但對於我的情況,我必須使用2次爆炸,不僅僅是1次,但是謝謝:) – dontHaveName

+0

用'explode()'和'str_replace()',你不必多次調用它們,即使你的'$ string'增加了兩個部分 - '1.name.2.name,3.name.8.name,10.name.11.name,12.name.13.name,16.name.17 .name「或每個部分的''.'' - 1.name.2.name.3.name.4.name,7.name.8.name.9.name.11.name' – Sean

0

備選:

輸出
$string = "1.name.2.name,3.name.8.name"; 

preg_match_all('|(\d+)\.([^.,]+)[,.]?|', $string, $matches); 
$matches = array_combine($matches[1], $matches[2]); 

print_r($matches); 

長時間後
Array 
(
    [1] => name 
    [2] => name 
    [3] => name 
    [8] => name 
)