我有两个数组,希望以不同的方式合并。假设我有以下数组:
$q_id = array(0 => 7, 1 => 8, 2 => 9)
$a_id = array(
0 => 24,
1 => 25,
2 => 26,
3 => 27,
4 => 28,
5 => 29,
6 => 30,
7 => 31,
8 => 32,
9 => 33,
10 => 34,
11 => 35,
)
我的最终目标是:
array(
[7] => array
(
[0] => 24
[1] => 25
[2] => 26
[3] => 27
)
[8] => array
(
[4] => 28
[5] => 29
[6] => 30
[7] => 31
)
[9] => array
(
[8] => 32
[9] => 33
[10] => 34
[11] => 35
)
)
数组操作的内置功能不符合我的需求。一个递归合并代码取自stackoverflow上的一篇文章:在php中组合数组以形成多维数组,创建一个数组,其中作为子数组执行的三个键中的每一个只接收每组四个的第一个值:
array(
[7] => array
(
[0] => 24
)
[8] => array
(
[4] => 28
)
[9] => array
(
[8] => 32
)
我确信解决方案在于递归性(也许是修改上面链接中提供的代码片段),但我只是不知道如何进行
非常感谢您的帮助。
这应该适用于您:
(这里,我只将array_combine()
和$q_id
数组作为关键字,将$a_id
数组作为值。其中,我使用大小为count($a_id)/count($q_id)
和array_chunk()
的X块作为值数组)
<?php
$q_id = [7, 8, 9];
$a_id = [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,];
$result = array_combine($q_id, array_chunk($a_id, count($a_id)/count($q_id), TRUE));
print_r($result);
?>
输出:
Array
(
[7] => Array
(
[0] => 24
[1] => 25
[2] => 26
[3] => 27
)
[8] => Array
(
[4] => 28
[5] => 29
[6] => 30
[7] => 31
)
[9] => Array
(
[8] => 32
[9] => 33
[10] => 34
[11] => 35
)
)