【问题标题】:Split Values in Array Using Explode to form Multidimensional Array使用 Explode 拆分数组中的值以形成多维数组
【发布时间】:2015-06-06 18:01:15
【问题描述】:

我是 PHP 新手,所以请善待。 :) 我有一个 3 深的阵列。像这样的:

Array(5) { 
[0]=> array(5) { 

    [0]=> string(0) "" 
    [1]=> string(21) "0,245.19000000,864432"
    [2]=> string(21) "1,245.26000000,864432" 
    [3]=> string(21) "2,245.49000000,864432" 
    [4]=> string(21) "4,245.33000000,864432" 
}

[1]=> array(5) { 
    [0]=> string(0) "" 
    [1]=> string(21) "0,245.19000000,864453" 
    [2]=> string(21) "1,245.26000000,864453" 
    [3]=> string(21) "2,245.49000000,864453" 
    [4]=> string(21) "4,245.33000000,864453" 
 }
}...

我想用逗号(“2,245.49000000,864453”)分解内部字符串,这样数组就变成了 4 深,如下所示:

Array(5) { 
  [0]=> array(5) { 

    [0]=> string(0) "" 

    [1]=> array (3)
              [0]=> "0"
              [1]=> "245.19000000"
              [2]=> "864432"

    [2]=> array (3)
              [0]=> "1"
              [1]=> "245.26000000"
              [2]=> "864432"

    [3]=> array (3)
              [0]=> "3"
              [1]=> "245.49000000"
              [2]=> "864432"

    [4]=> array (3)
              [0]=> "4"
              [1]=> "245.3000000"
              [2]=> "864432"

    [4]=> array (3)
              [0]=> "5"
              [1]=> "245.3300000"
              [2]=> "864432"
 }
}
...

到目前为止,我有:

$done = array();

for ($i = 0; $i<=count($chunks); $i++) { //loops to get size of each 2d array
$r = count($chunks[$i]);

        for ($c = 0; $c<=count($chunks[$r]); $c++) { //loops through 3d array

        $arrayparts = $chunks[$i][$c];
        $done[] = explode(",", $arrayparts); //$arrayparts is 3d array string that is exploded each time through loop

    }

}

我认为这段代码应该可以工作,但是当我 var_dump 什么也没打印? 有人可以帮我学习吗?

谢谢!

建议: $chunks 是 3d 数组

foreach($chunks as $innerArray) {
        $result[] = array_map(function($v){
            return explode(",", $v);
        }, $innerArray);
    }

【问题讨论】:

  • 那么我的编码现在是否有效,或者你为什么在你的问题中发布我的答案?

标签: php arrays multidimensional-array explode


【解决方案1】:

这使用了两次array_map()。也许是更好的方法,但我在喝啤酒三:

$result = array_map(function($v){
                        return array_map(function($v){ return explode(',', $v); }, $v);
                    }, $array);

【讨论】:

    【解决方案2】:

    不要复杂,用这个就行了:

    (这里我用foreach循环遍历每个innerArray,然后我用array_map()遍历所有值并将其分解并返回到结果数组)

    <?php
    
        foreach($arr as $innerArray) {
            $result[] = array_map(function($v){
                return explode(",", $v);
            }, $innerArray);
        }
    
        print_r($result);
    
    ?>
    

    【讨论】:

    • 我不太明白 $innerArray vs $arr
    • @SeanM 使用 foreach 循环遍历所有数组:[0]=&gt; array(5) { [0]=&gt; string(0) ""... 这些数组,然后在循环中使用 array_map() 分解数组的所有值并将其返回到结果数组跨度>
    • 好的。我还是不想工作。我正在使用名为 3d array $chunks 的数组。见编辑
    • 我的阵列设置错误,但这应该可以。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多