我有一个从一个系统传入的键值数组,并希望将具有不同键的相同值发送到另一个系统。也就是说,我们有
$map = [
'sys_a_1' => 'sys_b_1',
'sys_a_2' => 'sys_b_2',
];
$data = [
'sys_a_1' => 'data_1',
'sys_a_2' => 'data_2',
];
我们想要
$result = [
'sys_b_1' => 'data_1',
'sys_b_2' => 'data_2',
];
而且我可以循环执行:
foreach ($map as $from => $to) {
if (!empty($data[$from])) {
$result[$to] = $data[$from];
}
}
但是它只是惹恼我,没有array_something()
方式可以做到。array_combine($map, array_intersect_key($data, $map))
几乎做到了,但array_intersect_key
不会重新排序,所以一切都将一无所有。
array_combine()
怎么办,
<?php
$map = [
'sys_a_1' => 'sys_b_1',
'sys_a_2' => 'sys_b_2',
];
$data = [
'sys_a_1' => 'data_1',
'sys_a_2' => 'data_2',
];
$result = array_combine($map,$data);
print_r($result);
?>
DEMO: https://3v4l.org/C2HDV