如何“很好地”映射PHP数组的键?

问题描述 投票:0回答:1

我有一个从一个系统传入的键值数组,并希望将具有不同键的相同值发送到另一个系统。也就是说,我们有

$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不会重新排序,所以一切都将一无所有。

php arrays idiomatic
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.