Каков наилучший способ изменить ключ массива, используя значения из другого массива? - PullRequest
1 голос
/ 17 ноября 2009

У меня есть два массива:

array (
 'AK_AGE_ASS_VISIBLE' => '1',
 'AK_AGE_ASS_COMP' => '0',
  .....
 )

Я хочу изменить ключ на другое значение, взяв его из другого массива:

array(
'AK_AGE_ASS_VISIBLE' => 'AGENT_ASSOCIATED',
'AK_AGE_ASS_COMP' => 'AGENT_ASSOCIATED_O',
....
)

Конечный массив должен создать этот массив:

array(
'AGENT_ASSOCIATED' => '1',
'AGENT_ASSOCIATED_O' => '0',
...
)

Как правильно делать подобные вещи? Обратите внимание, что в массивах не будет одинакового количества записей, и нет гарантии, что первый массив будет иметь соответствующий ключ в другом массиве.

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 17 ноября 2009

Попробуйте это:

$values = array(
    'AK_AGE_ASS_VISIBLE' => '1',
    'AK_AGE_ASS_COMP' => '0',
    // …
);
$keymap = array(
    'AK_AGE_ASS_VISIBLE' => 'AGENT_ASSOCIATED',
    'AK_AGE_ASS_COMP' => 'AGENT_ASSOCIATED_O',
    // …
);

$output = array();
foreach ($values as $key => $val) {
    $output[$keymap[$key]] = $val;
}
2 голосов
/ 17 ноября 2009

Использовать встроенный array_combine()? http://www.php.net/manual/en/function.array-combine.php

Возможно, вам нужно использовать array_intersect_key(), чтобы отфильтровать те ключи, которых нет ни в одном из массивов. http://www.php.net/manual/en/function.array-intersect-key.php

Вот волшебная строчка:

$output = array_combine(
   array_intersect_key($array_with_keys, $array_with_values),
   array_intersect_key($array_with_values, $array_with_keys));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...