【发布时间】:2017-07-18 20:52:28
【问题描述】:
我有一个数组数组。每个嵌套数组包含两个逗号分隔值的成员。我想做的是将这些嵌套数组分解成多个数组。
例如,如果我有以下数组...
Array
(
[0] => Array
(
[a] => 'single value',
[b] => '1,2',
[c] => 'left, right'
],
[1] => Array
(
[a] => 'single value',
[b] => '4,5',
[c] => 'top, middle'
)
)
...我最终希望得到以下结果。
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'
)
)
我可以通过一系列嵌套的 foreach 循环来实现这一点,但这似乎效率很低 - 特别是考虑到某些 b 和 c 值可以包含许多元素的事实。
$new_array = [];
foreach($array as $a)
{
foreach(explode(',', $a['b']) as $b)
{
foreach(explode(',', $a['c']) as $c)
{
$d = [
'a' => $a['a'],
'b' => $b,
'c' => $c
];
$new_array[] = $d;
}
}
}
有没有更好的方法来使用数组函数来拆分它们?
谢谢
【问题讨论】:
-
为什么你认为这是低效的?您添加到新数组的元素数量正是它必须发生的次数......您无法减少它。无论如何,这个问题超出了 StackOverflow 的范围。你可以试试CodeReview,但我会考虑把这个问题放在一起。