2013-03-23 167 views
0

我從一個崗位操作的陣列爆炸字符串數組

$country = $_POST['country']; //The number of countries differ according to the user selection 
$c = count($country); 

輸出:`

Array ([0] => England,69,93 [1] => Australia,79,84 [2] => Greece,89,73 [3] => Germany,59,73)` 

我必須把它分解成一個多維數組,如:

> Array ([0] => Array ([0] => England [1] => 69 [2] => 93) 
>   [1] => Array ([0] => Australia [1] => 79 [2] => 84)      
>   [2] => Array ([0] => Greece [1] => 89 [2] => 73) 
>   [3] => Array ([0] => Germany [1] => 59 [2] => 73)) 

如何做到這一點在PHP

我試圖

$r = array(); 

foreach($country as &$r){ 
    $r = explode(",", $r); 
    //for($i = 0; $i < count($country); $i++){ 
    //for($j = 0; $j < count($r); $j++){ 
     //$array[$i][$j] = $r; 
    //} 
    //} 
} 
echo '<br>'; 
print_r($r); 

for循環也沒有工作,因此評論說出來,但如果需要離開它作爲一個選項。

打印功能現在只打印陣列1。不完全確定我做錯了什麼。任何幫助表示讚賞。謝謝

+0

嘗試'的print_r($國家);'你的循環後,而不是 – Crisp 2013-03-23 11:51:44

回答

1

你幾乎有:

$r = array(); 

foreach($country as $country_item){ 
    $r[] = explode(",", $country_item); 
} 
echo '<br>'; 
print_r($r); 

以上應該工作。

可能是什麼,甚至對你更好(如果你的國家是獨一無二的每個陣列中):

$r = array(); 

foreach($country as $country_item){ 
    $temp_array = explode(",", $country_item); 
    $r[$temp_array[0]] = array($temp_array[1], $temp_array[2]); 
} 
echo '<br>'; 
print_r($r); 

這會給你一個輸出像如下:

> Array ([England] => Array ([0] => 69 [1] => 93) 
>   [Australia] => Array ([0] => 79 [1] => 84)      
>   [Greece] => Array ([0] => 89 [1] => 73) 
>   [Germany] => Array ([0] => 59 [1] => 73)) 

因此,這意味着你可以訪問一個國家的數字如下:

$r[$country_name]; 
+0

非常感謝你...我仍然不明白,但...因爲我確實使用這條線...... $ r [] = explode(「,」,$ country_item);爲此我得到一個錯誤:致命錯誤:[]運算符不支持C:\ wamp \ www \ clar \ test5.php中第21行的字符串...但它在我輸入代碼時起作用...謝謝再次 – 2013-03-23 12:08:07

0

試試這個

for($i=0;$i<count($country);$i++) 
{ 
     $country1[$i] = explode(",", $country[$i]); 
} 
0

要覆蓋你的$ R主陣列從環路$ R - 這是解決方案 - 總是將您的增值經銷商:

$output = array(); 
foreach($country as $c){ 
    $parts = explode(',',$c); 
    $output[] = $parts; 
} 

print_r($output);