使用另一个数组中的值更改数组键的最佳方法是什么?

时间:2009-11-17 11:17:44

标签: php arrays

我有两个数组:

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',
...
)

做这些事情的正确方法是什么?请注意,arrayys将没有相同数量的条目,并且不保证第一个阵列在另一个阵列中具有相应的密钥。

非常感谢

2 个答案:

答案 0 :(得分:4)

试试这个:

$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;
}

答案 1 :(得分:2)

使用内置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));