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

标签 php arrays merge filtering

我有2个数组

数组 1:数组 ( [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 ( [0] => Array ( [Merc] => 6740 ) [1] => Array ( [BM] => 4565 ) [2] => Array ( [Lotus] => 3423 ))

要删除的特殊字符只能是 #&

最佳答案

过滤掉不需要的元素并将它们组合起来。

代码:(Demo)

$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,
)

附:您还可以使用 ctype_alpha() 进行过滤,如下所示:( Demo )

$cars=array_filter($cars,'ctype_alpha');  // only retain elements that are fully comprised of letters

关于php - 如何合并两个不同长度的数组,同时删除一个数组的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899942/

相关文章:

javascript - 从对象中提取单个键到数组

sql-server - T-SQL 合并返回多个结果

php - WordPress:如何只显示特定类别的帖子?

javascript - 禁用 Csrf 进行 ajax 查询

php - 如何将数组传递到 Laravel Controller

python - 为什么要扩展 python 列表

svn - 重新集成分支时,PREV、BASE 或 COMMITTED 修订关键字对于 URL 无效

php - 如何在 php 中使用 api 调用将电子邮件地址添加到 mailchimp 列表

PHP 私有(private)静态函数

java - 通过键盘从数组中选择一个元素