合并不同长度的php数组

合并不同长度的php数组,php,arrays,Php,Arrays,假设我有两个这样的数组: $arr1 = array( array('position' => 1), array('position' => 2), array('position' => 3), array('position' => 4), array('position' => 5), array('position' => 6), array('position' => 7) ); $arr2 = array( array(

假设我有两个这样的数组:

$arr1 = array(
array('position' => 1),
array('position' => 2),
array('position' => 3),
array('position' => 4),
array('position' => 5),
array('position' => 6),
array('position' => 7)
);

$arr2 = array(      
array(
    'a' => 'A1', 
    'b' => 'B1',
    'c' => 'C1'
),
array(
    'a' => 'A2',
    'b' => 'B2',
    'c' => 'C2'
),
array(
    'a' => 'A3',
    'b' => 'B3',
    'c' => 'C3'
)
);
$final_arr = array(
array(
    'a' => 'A1',
    'b' => 'B1',
    'c' => 'C1', 
    'position' => 1
),
array(
    'a' => 'A2',
    'b' => 'B2',
    'c' => 'C2', 
    'position' => 2
),
array(
    'a' => 'A3',
    'b' => 'B3',
    'c' => 'C3', 
    'position' => 3
)
);
目标是生成一个数组,其中第一个数组中的键
位置
复制到第二个数组中的每个数组,如下所示:

$arr1 = array(
array('position' => 1),
array('position' => 2),
array('position' => 3),
array('position' => 4),
array('position' => 5),
array('position' => 6),
array('position' => 7)
);

$arr2 = array(      
array(
    'a' => 'A1', 
    'b' => 'B1',
    'c' => 'C1'
),
array(
    'a' => 'A2',
    'b' => 'B2',
    'c' => 'C2'
),
array(
    'a' => 'A3',
    'b' => 'B3',
    'c' => 'C3'
)
);
$final_arr = array(
array(
    'a' => 'A1',
    'b' => 'B1',
    'c' => 'C1', 
    'position' => 1
),
array(
    'a' => 'A2',
    'b' => 'B2',
    'c' => 'C2', 
    'position' => 2
),
array(
    'a' => 'A3',
    'b' => 'B3',
    'c' => 'C3', 
    'position' => 3
)
);
为什么我不能用array\u merge来做这个?有什么想法吗

注意如上所示,数组的长度不同


感谢您的帮助

array\u merge
只需加入阵列即可。您将得到一个由
$arr1
$arr2
的值(子数组)组成的数组。(
array\u merge
实际上有两种不同的行为,这取决于它所操作的数组是否具有数字键或字符串/关联键。)您需要的是:

foreach($arr1 as $idx => $subar) {
  if (!isset($arr2[$idx])) {
    break;
  }
  $arr2[$idx]['position'] = $subar['position'];
}
我假设“位置”键是固定的。如果不是,那么您必须保证每个
$subar
都有一个已知的键,可以使用类似
array\u shift(array\u keys($subar))
的方法提取


foreach()通过array2循环@Dagon建议,迭代是最明显的方法。您希望$arr1>3怎么办?当您循环arr1而不是arr2()时,您的最终输出与user765368不匹配@Dagon I将子数组从数组1复制到数组2中的“position”键。由于OP要求
数组\u merge
,我觉得更新现有数组更符合该要求。是的,但他的最终数组有3个元素,而不是返回的7个元素。。都很好,直到OP;-)这个问题对我来说似乎有点模棱两可。OP要求“合并”,然后显示一个只包含3个元素的数组。我可以用while循环来做这个吗?对不起,一直困扰着你们。我也有这样的问题。我想问我的arr2记录器何时开始,然后问arr1如何给arr2
位置=0
?@Stfvns一个问题,发布一个新问题。