是否有array_merge的替代方法?

时间:2019-02-19 08:03:19

标签: php arrays laravel-5.4

问题是,我没有得到阵列代码的预期结果。

我尝试过进行array_merge,但是它所做的只是合并所有数组。

$medicine_order = $request['medicine_id'];

        array:3 [▼
          0 => "25"
          1 => "32"
          2 => "30"
      ]

      $medicine_quantity = $request['medicine_quantity'];

      array:3 [▼
          0 => "3"
          1 => "10"
          2 => "6"
      ]

      $count = 0;
      foreach ($medicine_order as $id) {
        $item = new Historyitem;
        $item->medicine_id = $id;

        foreach ($medicine_quantity as $id2) {
            $item->historyitem_quantity = $id2;
        }
        $item->save();
        $count++;
    }

我想将这些值存储在数据库中。

array:3 [▼
          0 => "25"
          1 => "3"
      ]
 array:3 [▼
          0 => "32"
          1 => "10"
      ] 
array:3 [▼
          0 => "30"
          1 => "6"
      ]

但是我得到了这些值:

array:3 [▼
          0 => "25"
          1 => "6"
      ]
 array:3 [▼
          0 => "32"
          1 => "6"
      ] 
array:3 [▼
          0 => "30"
          1 => "6"
      ]

2 个答案:

答案 0 :(得分:2)

解决方案是将您的foreach循环更改为此:

$count = 0;
foreach ($medicine_order as $key=>$id) {
    $item = new Historyitem;
    $item->medicine_id = $id;
    $item->historyitem_quantity = $medicine_quantity[$key];
    $item->save();
    $count++;
}

导致错误的原因是,内部foreach循环会迭代$medicine_quantity数组的每个元素,并且每次它将旧值替换为新值时,您就会得到最后索引的值,即最终结果中的“ 6”。

答案 1 :(得分:2)

您需要以与$medicine_quantity值相同的顺序处理$medicine_order值,这可以通过将键匹配到每个数组来完成。尝试以下方法:

foreach ($medicine_order as $key => $id) {
    $item = new Historyitem;
    $item->medicine_id = $id;
    $item->historyitem_quantity = $medicine_quantity[$key];
    $item->save();
    $count++;
}