【发布时间】:2020-07-13 23:25:16
【问题描述】:
我有一个从一个系统传入的键值数组,并希望将具有不同键的相同值发送到另一个系统。也就是说,我们有
$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 没有重新排序,所以它会完全不正常。
【问题讨论】:
-
我建议坚持使用你的 foreach 循环。
-
除非您的
$data值保证不是空字符串或 0 或 false 或 null,否则我会使用isset而不是!empty