在PHP中使用Map数组更改数组键

时间:2015-05-29 09:37:05

标签: php arrays

在主array中,我有:

 $array=array('index1'=>'value1', 'index2'=>'value2' , ....);

在另一个数组中,我保持key=>index关系:

$map=array('key1'=>'index1', 'key2'=>'index2' , ...);

有没有简单的方法将这两个数组合并为一个得到:

$combine=array('key1'=>'value1', 'key2'=>'value2', ...);

即主数组中的值和键来自地图数组。

4 个答案:

答案 0 :(得分:2)

<?php 

$array1=array('index1'=>'value1', 'index2'=>'value2');
$array2=array('key1'=>'index1', 'key2'=>'index2');

foreach($array2 as $key => $val){
    if(array_key_exists($val,$array1))
        $combined[$key] = $array1[$val];
}

// Output
print_r($combined);


?>

<强>输出

Array
(
    [key1] => value1
    [key2] => value2
)

答案 1 :(得分:1)

循环遍历$map数组并相应地提取$array的值并将它们放入$combine数组。你可以试试这个 -

$array=array('index1'=>'value1', 'index2'=>'value2');
$map=array('key1'=>'index1', 'key2'=>'index2');

$combine = array();

foreach($map as $key => $val) {
    $combine[$key] = $array[$val];
}
var_dump($combine);

<强>输出

array(2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}

答案 2 :(得分:1)

这里有一个可能的解决方案,如果键和值已经按预期顺序排列,并且您确定所有数组都具有相同的长度,请使用array_combine函数以及array_keys和{{1 }}

array_values

<强>输出

<?php
$array=array('index1'=>'value1', 'index2'=>'value2');
$map=array('key1'=>'index1', 'key2'=>'index2');

$combine = array_combine( array_keys($map), array_values($array) );

print_r($combine);
?>

答案 3 :(得分:1)

Variant没有自己的代码,只有函数。它只需要在两个数组中显示的键:

$array=array('index1'=>'value1', 'index2'=>'value2' , 'index3'=>'value3');
$map=array('key1'=>'index1', 'key2'=>'index2');

// next two lines if arrays may be of different length
$newmap = array_intersect_key(array_flip($map), $array);
$newarray = array_intersect_key($array, $newmap);

$new = array_combine($newmap, $newarray);
var_dump ($new);

输出:

array(2) { ["key1"]=> string(6) "value1" ["key2"]=> string(6) "value2" }