Php 如何在删除一个数组的一部分时合并两个不同长度的数组?
我有两个数组 数组1:Php 如何在删除一个数组的一部分时合并两个不同长度的数组?,php,arrays,merge,filtering,Php,Arrays,Merge,Filtering,我有两个数组 数组1:array([0]=>Merc[1]=>#[2]=>BM[3]=>&[4]=>Lotus) 数组2:数组([0]=>6740[1]=>4565[2]=>3423) 目标是将这两个阵列组合起来,最终得到: $result=['Merc'=>6740,'BM'=>4565,'Lotus'=>3423] 我知道,在这方面已经有相当多的指导,我已经读过了,但是数组操作对我来说是新的,不知怎么的,我就是无法理解逻辑和语法 请有经验的人告诉我哪里出了问题 我试过: ... ////
array([0]=>Merc[1]=>#[2]=>BM[3]=>&[4]=>Lotus)
数组2:数组([0]=>6740[1]=>4565[2]=>3423)
目标是将这两个阵列组合起来,最终得到:
$result=['Merc'=>6740,'BM'=>4565,'Lotus'=>3423]代码>
我知道,在这方面已经有相当多的指导,我已经读过了,但是数组操作对我来说是新的,不知怎么的,我就是无法理解逻辑和语法
请有经验的人告诉我哪里出了问题
我试过:
...
//// lets echo the arrays to make sure they are correct
print_r($car);?><br><?php
print_r($part);?><br><?php
//// lets combine the 2 arrays to get an associative array
$result = [];
for($i = 0; $i < count($car); $i++){
if (($car[$i] == "&")||($car[$i] == "#")){
$i = ($i + 1);
}
foreach($car as $car) {
foreach($part as $part) {
$result[] = array(
$car => $part,
);
}
}
}
print_r($result);
要去除的特殊字符将只会是#
或&
过滤掉不需要的元素并将它们组合在一起
代码:()
输出:
array (
'Merc' => 6740,
'BM' => 4565,
'Lotus' => 3423,
)
p、 你也可以这样过滤:()
试试这个,它可能会对您有所帮助。@redant我的方法对您的示例数据是成功的。它适用于所有真实的项目数据吗?如果没有,你需要用一些额外的样本数据来改进你的问题,这样我们就可以看到你的数据是如何变化的。我很乐意解释,但我不理解你的问题。OP希望过滤掉符号(即array\u diff()
)的工作),然后使用$cars
作为键和$parts
作为值生成一个数组(即array\u combine()
的工作)。同意<代码>数组_diff
将进行过滤。但在这里,它是在不检查密钥的情况下合并两个数组。如果在合并密钥之前需要检查密钥时出现这种情况,该怎么办?我很想了解这就是为什么我问OP我的方法是否适用于所有情况。@mickmacusa测试并有效治疗。简单而优雅的解决方案适合我的情况。不知道我的兵工厂还有多少弹药。谢谢。
$cars=['Merc','#','BM','&','Lotus'];
$parts=[6740,4565,3423];
$cars=array_diff($cars,['#','&']);
var_export(array_combine($cars,$parts));
array (
'Merc' => 6740,
'BM' => 4565,
'Lotus' => 3423,
)
$cars=array_filter($cars,'ctype_alpha'); // only retain elements that are fully comprised of letters