如果特定键匹配,PHP组合关联数组

时间:2016-07-21 21:39:17

标签: php arrays

更新的问题

如果两个数组都包含多个条目,您必须迭代以比较合并,该怎么办?我尝试使用嵌套的.btn{ cursor: pointer;} ,如此:

foreach

这会造成大量内存泄漏并导致脚本死亡。

原始问题

如果值匹配,我正在根据键的比较组合2个不同的数组,否则不会发生组合。

以下是每个数组的示例:

foreach ($vehicleArr as $v) {
  foreach ($specialArr as $s) {
    if ($v['vehicle'] === $s['vehicle']) {
      $freshArr[] = array_merge($v, $s);
    } else {
      $freshArr[] = $v;
    }
  }
}

Vehicle Array
(
  [vehicle] => 2016 Ford Transit 250 Cargo Van
  [stockno] => 153721
  [msrp] => 32195
  [price] => 32195
  [payment] => 359
  [type] => New
  [bodystyle] => Van
  [mileage] => 6
  [year] => 2016
  [make] => Ford
  [model] => Transit 250
  [trim] => Cargo Van
),(
  [vehicle] => 2016 Ford F150 XLT
  [stockno] => 153723
  [msrp] => 36195
  [price] => 36195
  [payment] => 429
  [type] => New
  [bodystyle] => Truck
  [mileage] => 6
  [year] => 2016
  [make] => Ford
  [model] => F150
  [trim] => XLT

目标是结合车辆阵列[车辆]和特殊阵列[车辆]来创建这样的阵列:

Special Array
(
  [vehicle] => 2016 Ford Transit 250 Cargo Van
  [store] => Baxter Ford
  [offertype] => $ Off MSRP
  [offervalue] => Up to $10,000
  [disclaimer] => *Valid on in-stock models. Based on stock #161621. Tax, title and license extra. With approved credit. Includes hail sale savings. See dealer for details. Offer expires 8\/1\/16.
  [expires] => 8/1/16
)

这似乎非常简单,但我似乎错过了一些东西。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您似乎只想将特殊阵列合并到车辆阵列中与同一车辆相关的物品上。您只需要在去的时候检查车钥匙,并且只合并钥匙匹配的项目。有几种方法可以做到这一点。这是一个使用array_map

$combined = array_map(function($v) use ($special_array) {
    if ($v['vehicle'] == $special_array['vehicle']) {
        return array_merge($v, $special_array);
    }
    return $v;
}, $vehicle_array);

我不得不说,根据我使用车辆数据的经验,vehicle键中的数据很可能在某些情况下可能不匹配,因为它确实属于同一类型的车辆文本中可能存在细微差别。如果有任何方法可以使用年份,制作,模型,修剪以匹配您的特殊阵列,它可能会更加一致。 (除非vehicle已经来自年,make,model,trim,在这种情况下,没关系。)