Laravel 5.4:如何遍历请求数组?

sr9*_*yar 6 php arrays laravel laravel-5 laravel-5.4

我的请求数据代表一系列新项目和现有项目.我正在尝试通过此数组来更新和创建项目.

这是我检索数组的方法:

$userInput = $request->all();
foreach( $userInput['items'] as $key=>&$item){
Run Code Online (Sandbox Code Playgroud)

稍后在代码中我更新了一个现有项目:

$updateItem = Item::find($item['id']);
$updateItem->number = $item['number'];
$updateItem->save();
Run Code Online (Sandbox Code Playgroud)

但$item['number']似乎包含以前更新的旧输入,而不是我上次输入的值.

如何在Laravel中循环请求数据?

这是我运行它的整个代码(想摆脱混乱):

$userInput = $request->all();
// checking $userInput here
// I can see the new value in the array

foreach( $userInput['items'] as $key=>$item){
  if($item['delete'] == 1) {
    Item::where('order_id',$order->id)
      ->where('id',$item['id'])
      ->delete();
  } else {
    if(empty($item['id'])) {
    } else {
      $updateItem = Item::find($item['id']);
      $updateItem->number = $item['id'];
      $updateItem->save();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是来自html的输入(只是为了显示我也检查了表单,数据来得很好):

<input id="basicItemNumber-31" class="form-control" name="items[31][number]" placeholder="Unique number" value="31" type="text">
Run Code Online (Sandbox Code Playgroud)

Luk*_*uke 2

当您通过引用传递下属的值时(在变量名称之前使用),您可能在内部的某个地方for无意中更改了它的值。$item&

例如,某些或大多数人认为这是不好的做法,因为它可能导致“意外”行为。采用下面的示例代码,该代码循环遍历 ofarray两次$items,一次按引用循环,一次按值循环。

<?php

$items = ['one','two','three'];

foreach ($items as &$item) {
    //do nothing.
}

foreach ($items as $item) {
    //do nothing again.
}

var_dump($items);

//outputs

array(3) {
  [0]=>
  string(3) "one"
  [1]=>
  string(3) "two"
  [2]=>
  &string(3) "two"
}
Run Code Online (Sandbox Code Playgroud)