2012-01-09 44 views
0

可能重複:
convert string to 2D array using php字符串轉換爲預定義的2D陣列

我有串類似如下:

01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16 

我怎樣可以在上述字符串轉換爲定義的陣列如下所示:

$a[0] = array('column' => array("row1" => "01", "row2"=> "05", "row3" => "07", "row4" =>"12")); 
$a[1] = array('column' => array("row1" => "03", "row2"=> "04", "row3" => "09", "row4" =>"14")); 
$a[2] = array('column' => array("row1" => "02", "row2"=> "06", "row3" => "08", "row4" =>"13")); 
$a[3] = array('column' => array("row1" => "15", "row2"=> "10", "row3" => "11", "row4" =>"16")); 

我知道我應該使用爆炸功能,但不知道它應該如何實現這一點,任何幫助將不勝感激,謝謝!

+0

未來,只是更新你現有的問題。 – 2012-01-10 14:09:28

回答

1

我認爲這是你在找什麼:

<?php 

$a = array(); 
$str = "01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16"; 

$arr = explode("|", $str); 
for ($i = 0; $i < count($arr); $i++) { 

    $a[$i] = array('column' => array()); 

} 

for ($i=0; $i<count($arr); $i++) { 

    $arr2 = explode(",", $arr[$i]); 

    for ($j = 0; $j < count($arr2); $j++) { 

     $key = "row" . intval($i + 1); 
     $a[$j]['column'][$key] = $arr2[$j]; 

    } 

} 

echo "<pre>"; 
var_dump($a); 

?> 
4

與該格式基本上你只需要:

$a = array_map("str_getcsv", explode("|", $string)); 

,給你一個枚舉陣列。如果你希望你的具體命名鍵,那麼你have'd進行後期處理再此結構:

foreach ($a as $i=>$row) { 
    $a[$i] = array("column" => array("row1"=>$row[0], "row2"=>$row[1], "row3"=>$row[2], "row4"=>$row[3])); 
} 
0
$sequence = "01,03,02,15|05,04,06,10|07,09,08,11|12,14,13,16"; 
$columns = explode("|", $sequence); 

$result = array(); 

foreach ($columns as $i => $column) 
{ 
    $rows = explode(",", $column); 
    $sub_array = array(); 
    foreach ($rows as $id => $row) 
    { 
     $sub_array["row".($id+1)] = $row; 
    } 
    $result[$i] = array('column' => $sub_array); 
} 
+0

the = array();初始化不需要,但我一直寫下來:) 實際上在第二種情況下,您需要重置像($ sub_array = array();)這樣的變量,因爲它的作用域不會在一個循環後結束 – v01pe 2012-01-09 23:41:16