2016-10-11 32 views
0

想從字符串創建多維數組。我的字符串是:如何從字符串創建多維數組

13,4,3 | 65,1,1 | 27,3,2

我想將其存儲在一個數組,我假設是這樣的:

$multi_array = array 
    (
    array(13,4,3), 
    array(65,1,1), 
    array(27,3,2) 
); 

所以我可以用$ multi_array [1] [1]調用它,它應該返回「4」。

下面的代碼我到目前爲止:

$string = "13,4,3|65,1,1|27,3,2"; 
$explode = explode("|", $string); 
$multi_array = array(); //declare array 

    $count = 0; 

foreach ($explode as $value) { 

    $explode2 = explode(",", $value); 

    foreach ($explode2 as $value2) { 
    // I'm stuck here....don't know what to do. 
    } 
    $count++; 
} 
echo '<pre>', print_r($multi_array), '</pre>'; 

回答

1

嘗試這種方式,

$data = '13,4,3|65,1,1|27,3,2'; 

$return_2d_array = array_map (
    function ($_) {return explode (',', $_);}, 
    explode ('|', $data) 
); 

print '<pre>'; 
print_r ($return_2d_array); 
print '</pre>'; 

用自己的代碼

$string = "13,4,3|65,1,1|27,3,2"; 
$explode = explode("|", $string); 
$multi_array = array(); //declare array 

$count = 0; 

foreach ($explode as $key=>$value) { // see changes on this line 

    $explode2 = explode(",", $value); 

    foreach ($explode2 as $value2) { 
    $multi_array[$key][$count] = $value2; 
    $count++; // see count variable position changes here 
    } 

} 
echo '<pre>', print_r($multi_array), '</pre>'; 
+0

哇!很快。非常感謝您的回答查理,或者是麥金塔......還是迪安德拉?無論如何,非常感謝:)它不會讓我接受你的答案,因爲你的回答太快。 – KeepCool

+0

@KeepCool,但你現在可以將它標記爲接受答案:) –

3

你的外foreach循環是正確的。你不需要你的內循環,因爲explode返回一個數組。就在這個陣列添加到您的結果數組,你會得到一個二維數組

$input = "13,4,3|65,1,1|27,3,2"; 

$result = []; 

foreach (explode('|', $input) as $split) 
    $result[] = explode(',', $split); 

print_r($result); 
0

可以使用爆炸功能用分隔符分割字符串,在這種情況下'|',像這樣:

PHP:

$data = '13,4,3|65,1,1|27,3,2'; 

$new_arrays = explode('|', $data); // with this you can separate the string in 3 arrays with the demiliter '|' 

這裏是爆炸的資料:http://php.net/manual/en/function.explode.php

商祺!