【发布时间】:2021-01-10 11:39:00
【问题描述】:
我有这样的关联数组:
[
['one' => 'data 1'],
['two' => 'data 2'],
['two' => 'data 3'],
['three' => 'data 4'],
['two' => 'data 5'],
['two' => 'data 6'],
['two' => 'data 7'],
['four' => 'data 8'],
]
我想像这样加入他们:
[
['one' => 'data 1'],
['two' => ['data 2', 'data 3'] ],
['three' => 'data 4'],
['two' => ['data 5', 'data 6', 'data 7'] ],
['four' => 'data 8'],
]
我已经尝试过 array_map 等,但我无法得到我想要的结果。有什么想法吗?
编辑
我现在的代码是这样的:
$valBefore = null;
$out = [];
foreach($array as $k => $subarray) {
foreach($subarray as $kk => $vv) {
if ($valBefore == $kk) {
$temp = $out[$k-1][$kk];
$out[$k-1][$kk] = [ $temp, $vv ];
unset($out[$k]);
}
$valBefore = $kk;
}
$out[] = $subarray;
}
输出如下:
[
{ "one": "data 1" },
{ "two": [ "data 2", "data 3" ] },
{ "two": "data 3" },
{ "three": "data 4", },
{ "two": [ "data 5", "data 6" ] },
{ "two": [ "data 6", "data 7" ] },
{ "two": "data 7" },
{ "four": "data 8" }
]
(unset() 仍然无法正常工作)这是我目前最好的代码,我仍在努力使其适合我想要的输出。
【问题讨论】:
-
你能告诉我们你厌倦的代码(那行不通)吗?
-
@KoalaYeung 抱歉,我已经删除它以尝试另一种方法(仍然无效),用我当前的代码编辑。