Php 如何在删除一个数组的一部分时合并两个不同长度的数组?

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] 我知道,在这方面已经有相当多的指导,我已经读过了,但是数组操作对我来说是新的,不知怎么的,我就是无法理解逻辑和语法 请有经验的人告诉我哪里出了问题 我试过: ... ////

我有两个数组

数组1:
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