Есть ли альтернатива для array_merge? - PullRequest
0 голосов
/ 19 февраля 2019

Проблема в том, что я не получаю ожидаемых результатов от кода моего массива.

Я пытался выполнить 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 голосов
/ 19 февраля 2019

Вам необходимо обработать значения $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++;
}
0 голосов
/ 19 февраля 2019

Решение состоит в том, чтобы изменить цикл 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» в конечном результате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...