Php 如何基于特定索引映射两个数组?

Php 如何基于特定索引映射两个数组?,php,Php,我想将$array2值映射到$array1索引,这些索引具有值3和5,我想得到如下数组: Array1 ( [0] => [1] => [2] => 3 [3] => [4] => 5 [5] => [6] => ) Array2 ( [0] => URD [1] => ISL ) 我尝试了以下方法: Array ( [0] => [1] => [2] => URD [3] => [4] => ISL [5]

我想将$array2值映射到$array1索引,这些索引具有值3和5,我想得到如下数组:

Array1 ( [0] => [1] => [2] => 3 [3] => [4] => 5 [5] => [6] => )
Array2 ( [0] => URD [1] => ISL )
我尝试了以下方法:

Array ( [0] => [1] => [2] => URD [3] => [4] => ISL [5] => [6] => )
Array ( [0] => [1] => [2] => URD [3] => [4] => ISL [5] => [6] => )
但实际结果是:

$newArray = array_values(array_filter(array_merge($array1,$array2)));
预期结果应该是:

Array([0] => 3[1] => 5[2] => URD[3] => ISL)
代码

请尝试以下操作:

Array ( [0] => [1] => [2] => URD [3] => [4] => ISL [5] => [6] => )
Array ( [0] => [1] => [2] => URD [3] => [4] => ISL [5] => [6] => )
警告

该方法假定数组1和数组2中都有值

一旦数组2中的值被拆分并且数组2为空,具有设置值的数组1项将不再受影响

该方法不关心数组1中设置的值是什么,只关心有一个值

进一步阅读

代码笔


根据OPS要求,此解决方案有效且易于理解

array(7) {
  [0]=>
  string(0) ""
  [1]=>
  string(0) ""
  [2]=>
  string(3) "URD"
  [3]=>
  string(0) ""
  [4]=>
  string(3) "ISL"
  [5]=>
  string(0) ""
  [6]=>
  string(0) ""
}
如果你想让它按顺序排列,比如3应该总是排在第一位,然后是排序数组1,然后使用我的代码。。。 如果需要,3应替换为URD,5应替换为ISL
然后,如果密码会有所不同,那就换一种方式吧。。。未经测试,但应该有效

$array1 = ["URD", "" ,"ISL","","",""];

欢迎来到StackOverflow!请阅读和阅读。显示var_导出$array1;var_出口$array2;我发现这个问题不清楚,因为没有一个清楚的解释为什么3和5的元素应该被另一个数组中的值替换。是的,我们可以假设您希望用另一个数组中的值替换非空值,但第二个数组和第一个数组值之间似乎没有明确的关系。
<?php

$a = array ( 0 => '', 1 => '', 2 => 3, 3 => '', 4 => 5, 5 => '', 6 => '' );

$b = array ( 0 => 'URD', 1 => 'ISL' );

$c = array_replace ( $a, array_combine ( array_keys ( array_filter ( $a ) ), $b ) );

print_r ( $c );

?>