分割嵌套数组的可能更简单的方法

时间:2017-07-18 11:01:27

标签: php arrays

我有一个数组数组。每个嵌套数组包含两个逗号分隔值的成员。我想做的是将这些嵌套数组分成多个数组。

例如,如果我有以下数组数组......

console.log(mult(10)(3)(2).valueOf());
// 60

......我最终希望得到以下结论。

Array
(
    [0] => Array
        (
            [a] => 'single value',
            [b] => '1,2',
            [c] => 'left, right'
    ],

    [1] => Array
        (
            [a] => 'single value',
            [b] => '4,5',
            [c] => 'top, middle'
        )
)

我可以通过一系列嵌套的foreach循环来实现这一点,但这似乎效率很低 - 特别是考虑到某些b和c值可以包含许多元素的事实。

Array
(
    [0] => Array
        (
            [a] => 'single value',
            [b] => '1',
            [c] => 'left'
        )

    [1] => Array
        (
            [a] => 'single value',
            [b] => '1',
            [c] => 'right'
        )

    [2] => Array
        (
            [a] => 'single value',
            [b] => '2',
            [c] => 'left'
        )

    [3] => Array
        (
            [a] => 'single value',
            [b] => '2',
            [c] => 'right'
        )

    [4] => Array
        (
            [a] => 'single value',
            [b] => '4',
            [c] => 'top'
        )

    [5] => Array
        (
            [a] => 'single value',
            [b] => '4',
            [c] => 'bottom'
        )

    [6] => Array
        (
            [a] => 'single value',
            [b] => '5',
            [c] => 'top'
        )

    [7] => Array
        (
            [a] => 'single value',
            [b] => '5',
            [c] => 'bottom'
        )
)

有没有更好的方法可以使用数组函数将它们拆分出来?

由于

1 个答案:

答案 0 :(得分:0)

我认为您的解决方案没问题。在我的示例中,我使用递归函数来隐藏"其中一个嵌套循环并通过取消已处理的元素来保存一些内存(在示例中由array_shift完成)。

 import gulp from 'gulp';
 import { scripts } from './webpack';
 import { server }  from './server';
 import { assets } from './tasks/assets';

 export const dev   = gulp.series( server )
 export const build = gulp.series( scripts, assets )
 export default dev