如何将多个数组合并为具有相同列的数组。我的代码就像
$stmt1 = $pdo ->prepare('SELECT * FROM `formsone`');
$stmt1 ->execute();
$applications1 = $stmt1 ->fetchAll();
$stmt2 = $pdo ->prepare('SELECT * FROM `formstwo`');
$stmt2 ->execute();
$applications2 = $stmt2 ->fetchAll();
$stmt3 = $pdo ->prepare('SELECT * FROM `formsthree`');
$stmt3 ->execute();
$applications3 = $stmt3 ->fetchAll();
$stmt4 = $pdo ->prepare('SELECT * FROM `formsfour`');
$stmt4 ->execute();
$applications4 = $stmt4 ->fetchAll();
$results = // Merge all applications into one
它们都有相同的列,例如id
,name
,password
,我只想将所有结果合并为一个。
答案 0 :(得分:0)
好吧,我们假设您有4个阵列:
<?php
$data1=[
'id' => 1,
'name' => 'test1',
'password' => 'pass1'
];
$data2=[
'id' => 2,
'name' => 'test2',
'password' => 'pass2'
];
$data3=[
'id' => 3,
'name' => 'test3',
'password' => 'pass3'
];
$data4=[
'id' => 4,
'name' => 'test4',
'password' => 'pass4'
];
它们都与您提到的字段相同。要合并它们,您可以使用:
$result=array_merge_recursive($data1,$data2,$data3,$data4);
echo '<pre>';
print_r($result);
输出将是一个新数组,包括基于每个数组的键值的所有合并数据:
Array
(
[id] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[name] => Array
(
[0] => test1
[1] => test2
[2] => test3
[3] => test4
)
[password] => Array
(
[0] => pass1
[1] => pass2
[2] => pass3
[3] => pass4
)
)
在此示例中,array_merge
将无法正常工作,因为在创建新数组时,它会覆盖数据,因为array_key
(我们的示例中为id,name,password)。这就是我使用array_merge_recursive
创建基于键值的多维数组的原因。