简体   繁体   English

如何在PHP中将两个数组的其他元素放在相似元素的旁边

[英]How to put other elements of two array beside similar ones in PHP

I have two arrays like this: 我有两个像这样的数组:

$a1 = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20),
    ...
);

$a2 =  = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50),
    ...
);

I need to combine these two like this: 我需要将这两个结合起来:

$a3 =  = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10, 'c2' => 40),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20, 'c2' => 50),
    ...
);

How can I do it using PHP and less code? 如何使用PHP和更少的代码来实现?

The function you're looking for is probably just a single function call: array_replace_recursive() 您要查找的函数可能只是一个函数调用: array_replace_recursive()

$a1 = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20),
);

$a2 =  array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50),
);

$result = array_replace_recursive($a1, $a2);
var_dump($result);

which gives: 这使:

array(2) {
  [0]=>
  array(4) {
    ["fisrtname"]=>
    string(4) "john"
    ["lastname"]=>
    string(5) "smith"
    ["c1"]=>
    int(10)
    ["c2"]=>
    int(40)
  }
  [1]=>
  array(4) {
    ["fisrtname"]=>
    string(4) "jane"
    ["lastname"]=>
    string(5) "smith"
    ["c1"]=>
    int(20)
    ["c2"]=>
    int(50)
  }
}

您可以使用array_maparray_merge函数来完成此操作。

$a3 = array_map("array_merge",$a1, $a2);

If the array a1 and a2 length is same, You can use code below: 如果数组a1和a2的长度相同,则可以使用以下代码:

<?php

$a1 = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c1' => 10),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c1' => 20)
);

$a2 = array(
    array('fisrtname' => 'john', 'lastname' => 'smith', 'c2' => 40),
    array('fisrtname' => 'jane', 'lastname' => 'smith', 'c2' => 50)
);

for ($i=0; $i < count($a1); $i++) { 
    $a3[$i] = array_merge($a1[$i],$a2[$i]);
    $a3[$i] = array_unique($a3[$i]);
}

var_dump($a3);

?>

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

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