如果数组在月份是关联的,那么您可以使用 array_replace。
首先使数组与 array_column 关联,然后将 $arr1 替换为 $arr2 值。
$arr1 = [
['month' => 1],
['month' => 2],
['month' => 3],
['month' => 4]
];
$arr2 = [
['month' => 3, 'info' => 'Alpha'],
['month' => 4, 'info' => 'Beta'],
['month' => 1, 'info' => 'Gamma'],
];
$arr1 = array_column($arr1, null, 'month');
$arr2 = array_column($arr2, null, 'month');
$result = array_replace($arr1, $arr2);
var_dump($result);
回报:
array(4) {
[1]=>
array(2) {
["month"]=>
int(1)
["info"]=>
string(5) "Gamma"
}
[2]=>
array(1) {
["month"]=>
int(2)
}
[3]=>
array(2) {
["month"]=>
int(3)
["info"]=>
string(5) "Alpha"
}
[4]=>
array(2) {
["month"]=>
int(4)
["info"]=>
string(4) "Beta"
}
}
https://3v4l.org/tpshB
如果您有没有 array_column 的旧版本 PHP,那么您可以使用手册中的这个遗留代码
if (!function_exists('array_column')) {
function array_column($array, $columnKey, $indexKey = null)
{
$result = array();
foreach ($array as $subArray) {
if (is_null($indexKey) && array_key_exists($columnKey, $subArray)) {
$result[] = is_object($subArray)?$subArray->$columnKey: $subArray[$columnKey];
} elseif (array_key_exists($indexKey, $subArray)) {
if (is_null($columnKey)) {
$index = is_object($subArray)?$subArray->$indexKey: $subArray[$indexKey];
$result[$index] = $subArray;
} elseif (array_key_exists($columnKey, $subArray)) {
$index = is_object($subArray)?$subArray->$indexKey: $subArray[$indexKey];
$result[$index] = is_object($subArray)?$subArray->$columnKey: $subArray[$columnKey];
}
}
}
return $result;
}
}