2016-10-11 38 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

商祺!