合并不同长度的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一个问题,发布一个新问题。