在主array
中,我有:
$array=array('index1'=>'value1', 'index2'=>'value2' , ....);
在另一个数组中,我保持key=>index
关系:
$map=array('key1'=>'index1', 'key2'=>'index2' , ...);
有没有简单的方法将这两个数组合并为一个得到:
$combine=array('key1'=>'value1', 'key2'=>'value2', ...);
即主数组中的值和键来自地图数组。
答案 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" }