Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用映射数组更改数组键_Php_Arrays - Fatal编程技术网

在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。