我有2个数组,如下所示( array -1,Array-2),我想根据下面的条件合并为一个数组,如下所示(New)
(如果数组-1(HID)=数组-2(HID),则如下所示)
阵列-1
Array
(
[0] => Array
(
[hID] => 107
[env] => DEV
[serv] => server1
)
[1] => Array
(
[hID] => 122
[env] => DEV
[serv] => server2
)阵列-2
Array
(
[107] => Array
(
[hID] => 107
[cpu] => 32
[mem] => 24
)
[122] => Array
(
[hID] => 122
[cpu] => 16
[mem] => 24
)新阵列
Array
(
[0] => Array
(
[hID] => 107
[env] => DEV
[serv] => server1
[cpu] => 32
[mem] => 24
)
[1] => Array
(
[hID] => 122
[env] => DEV
[serv] => server2
[cpu] => 16
[mem] => 24
)发布于 2019-06-28 15:20:46
如果第二个数组总是具有与hID值相同的键,那么您可以执行以下操作:
$newArray = [];
foreach ($array1 as $item) {
if (isset($array2[$item['hID']])) {
$newArray[] = array_merge($item, $array2[$item['hID']]);
}
}或者,您可以始终使用以下方法创建这样的数组(键与hID值相同):
$array2 = array_combine(
array_column($array2, 'hID'),
$array2
);发布于 2019-06-28 15:30:41
你可以试试这个:
测试数组:
$array_1 = [
0 => [
"hID" => 107,
"env" => "DEV",
"serv" => "server1"
],
1 => [
"hID" => 122,
"env" => "DEV",
"serv" => "server2"
]
];
$array_2 = [
0 => [
"hID" => 107,
"cpu" => 32,
"mem" => 24
],
1 => [
"hID" => 122,
"cpu" => 16,
"mem" => 24
]
];合并两个数组的代码:
$new_array = [];
for($i=0;$i<count($array_1);$i++) {
for($j=0;$j<count($array_2);$j++) {
if ($array_1[$i]['hID'] === $array_2[$j]['hID']) {
$new_array[] = array_merge($array_1[$i], $array_2[$j]);
}
}
}输出:
var_dump($new_array);
array(2) {
[0]=>
array(5) {
["hID"]=>
int(107)
["env"]=>
string(3) "DEV"
["serv"]=>
string(7) "server1"
["cpu"]=>
int(32)
["mem"]=>
int(24)
}
[1]=>
array(5) {
["hID"]=>
int(122)
["env"]=>
string(3) "DEV"
["serv"]=>
string(7) "server2"
["cpu"]=>
int(16)
["mem"]=>
int(24)
}
}这里的测试:http://sandbox.onlinephpfunctions.com/
发布于 2019-06-28 15:14:26
if($array1[hID] == $array2[hID]){$Array3 = array_merge($array1,$array2);}
https://stackoverflow.com/questions/56809315
复制相似问题