繁体   English   中英

PHP如何合并数组?

[英]PHP how to merge arrays?

如何将多个数组合并为具有相同列的数组。 我的代码就像

$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

它们都具有相同的列,如idnamepassword ,我只想将所有结果合并为一个。

好吧,假设您有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来基于键值创建多维数组的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM