在PHP中使用映射数组更改数组键
在主在PHP中使用映射数组更改数组键,php,arrays,Php,Arrays,在主数组中,我有: $array=array('index1'=>'value1', 'index2'=>'value2' , ....); 在另一个数组中,我保留key=>index关系: $map=array('key1'=>'index1', 'key2'=>'index2' , ...); 是否有任何简单的方法将这两个数组合并为一个,以获得: $combine=array('key1'=>'value1', 'key2'=>'value2', .
数组中
,我有:
$array=array('index1'=>'value1', 'index2'=>'value2' , ....);
在另一个数组中,我保留key=>index
关系:
$map=array('key1'=>'index1', 'key2'=>'index2' , ...);
是否有任何简单的方法将这两个数组合并为一个,以获得:
$combine=array('key1'=>'value1', 'key2'=>'value2', ...);
也就是说,来自主数组的值和键来自映射数组。循环通过
$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"
}
Array
(
[key1] => value1
[key2] => value2
)
Array
(
[key1] => value1
[key2] => value2
)
循环遍历
$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"
}
Array
(
[key1] => value1
[key2] => value2
)
Array
(
[key1] => value1
[key2] => value2
)
这里一个可能的解决方案是,如果键和值已经按预期顺序排列,并且您确定所有数组都具有相同的长度,请将该函数与
数组\u键
和数组\u值
<?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);
?>
这里一个可能的解决方案是,如果键和值已经按预期顺序排列,并且您确定所有数组都具有相同的长度,请将该函数与
数组\u键
和数组\u值
<?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);
?>
变量没有自己的代码,只有函数。它只接受两个数组中显示的键:
$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" }
变量没有自己的代码,只有函数。它只接受两个数组中显示的键:
$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" }
你试过什么或做过什么研究吗?你试过什么或做过什么研究吗?哈夫,幸好所有键的顺序都正确,否则你的整个代码都会崩溃。@Rizier123>是的,你是对的。正如我在回答中所说的那样,键和值的顺序必须正确,而且它们的长度也必须相同,尽管如果不是,PHP将返回FALSE。哈夫,幸好所有键的顺序都正确,否则您的整个代码都会中断。@Rizier123>是的,您是正确的。正如我在回答中所说的,键和值的顺序必须正确,而且它们的长度也必须相同,尽管如果不是,PHP将返回FALSE。