我想合并以下后续数组。我怎样才能做到这一点?条件:如果数组数等于3,则将后续数组合并到父级。
输入项
$data = [
['mango', 'orange', 'apple'],
['abc'],
['ctp'],
['pqr', 'cst', 'dtc'],
['cbx'],
['xyz'],
['atc'],
];
Run Code Online (Sandbox Code Playgroud)
我想要输出如下:
$data = [
['mango', 'orange', 'apple' 'additional' => [ ['abc'], ['ctp'] ] ],
['pqr', 'cst', 'dtc', 'additional' => [ ['cbx'],['xyz'],['atc'] ] ],
];
Run Code Online (Sandbox Code Playgroud)
循环数组并跟踪将数据合并到的位置。
foreach($data as $key => $d){
if(count($d)>1){
$mergeTo = $key; // store key where to merge to
continue; // go to next item
}
$data[$mergeTo]["additional"][] = $d; // add value to $mergeTo
unset($data[$key]); // unset the value from the main array
}
$data = array_values($data); // reset keys
var_export($data);
Run Code Online (Sandbox Code Playgroud)
输出:
array (
0 =>
array (
0 => 'mango',
1 => 'orange',
2 => 'apple',
'additional' =>
array (
0 =>
array (
0 => 'abc',
),
1 =>
array (
0 => 'ctp',
),
),
),
1 =>
array (
0 => 'pqr',
1 => 'cst',
2 => 'dtc',
'additional' =>
array (
0 =>
array (
0 => 'cbx',
),
1 =>
array (
0 => 'xyz',
),
2 =>
array (
0 => 'atc',
),
),
),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |