Как «красиво» сопоставить ключи массива PHP? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть массив значений ключей, поступающих из одной системы, и я хочу отправить те же значения с разными ключами в другую. То есть у нас есть

$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',
];

, и я могу сделать это с помощью al oop:

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 не меняет порядок, поэтому все будет в порядке.

1 Ответ

0 голосов
/ 02 апреля 2020

А как насчет 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...