数组计数-Laravel

数组计数-Laravel,laravel,Laravel,如何计算所附屏幕截图的阵列数。 在这种情况下,我想要的数字是2 public function update(Request $request, $jobId) { //dd($request); // cast into a collection use the collect() helper $collection = collect($request); for ($i=0; $i < $collection

如何计算所附屏幕截图的阵列数。 在这种情况下,我想要的数字是2

public function update(Request $request, $jobId)
    {
        //dd($request);
        // cast into a collection use the collect() helper
        $collection = collect($request);

        for ($i=0; $i < $collection->count(); $i++) {
          //dd(count($request));
          $subJob = SubJob::Find($request->get('id')[$i]);
          $subJob->job_id = $jobId;
          $subJob->name = $request->get('name')[$i];
          $subJob->size = $request->get('size')[$i];
          $subJob->medium = $request->get('medium')[$i];
          $subJob->feature = $request->get('feature')[$i];
          $subJob->qty = $request->get('qty')[$i];
          $subJob->price = $request->get('price')[$i];
          $subJob->total = $request->get('qty')[$i] * $request->get('price')[$i];
          $subJob->save();
     }
公共功能更新(请求$Request,$jobId)
{
//dd(请求);
//使用collect()帮助程序强制转换到集合中
$collection=collect$request;
对于($i=0;$i<$collection->count();$i++){
//dd(计数($请求));
$subJob=subJob::Find($request->get('id')[$i]);
$subJob->job\u id=$jobId;
$subJob->name=$request->get('name')[$i];
$subJob->size=$request->get('size')[$i];
$subJob->medium=$request->get('medium')[$i];
$subJob->feature=$request->get('feature')[$i];
$subJob->qty=$request->get('qty')[$i];
$subJob->price=$request->get('price')[$i];
$subJob->total=$request->get('qty')[$i]*$request->get('price')[$i];
$subJob->save();
}
$collection->count()给出值9

是否有其他方法运行循环直到结束? 例如,在blade中,我们有$loop->last,但在这里,我在控制器级别工作

<form action="{{ route('employee.subjob.update',$job->id) }}" method="post"><br>
      @csrf
      @method('PUT')
      @foreach ($subJobs as $subJob)
        <input type="hidden" name="id[]" value="{{$subJob->id}}">
        <tr>
          <td><input type="text" name="name[]" value="{{$subJob->name}}"></td>
          <td><input type="text" name="size[]" value="{{$subJob->size}}"></td>
          <td>
            <textarea name="medium[]" rows="3" cols="20">{{$subJob->medium}}</textarea>
          </td>
          <td>
            <textarea name="feature[]" rows="3" cols="20">{{$subJob->feature}}</textarea>
          </td>
          <td><input type="text" name="qty[]" value="{{$subJob->qty}}"></td>
          <td><input type="text" name="price[]" value="{{$subJob->price}}"></td>
          <td><input type="text" name="total[]" value="{{$subJob->total}}" disabled></td>
        </tr>
      @endforeach
      <button type="submit" class="btn btn-primary"> Update Job No {{$job->id}}</button>
      </form>

@csrf @方法('PUT') @foreach($subbobs作为$subbob) {{$subbob->medium} {{$subbob->feature} @endforeach 更新作业编号{{$Job->id}
可能尝试计数($collection->items)

可能尝试计数($collection->items)

问题在于如何将数据发送到后端。看起来,您是按属性(一个由
id
s组成的数组,然后是一个由
name
s组成的数组等等)而不是按“类”进行分组的(包含其中所有属性的元素数组:
id
name
,…)

所以,你可以用两种方法来解决这个问题

  • 改进在前端收集数据并将其发送到后端的方式(推荐)
  • 按现在的方式处理后面的数据
  • 对于第一种方法,有几个指南/教程可以帮助您。因此,让我们继续第二种方法

    公共功能更新(请求$Request,$jobId)
    {
    /**这应该是输出2*/
    $size=count(collect($request)->get('id');
    //Try:dd($size);
    对于($i=0;$i<$size;$i++)
    {
    $subJob=subJob::Find($request->get('id')[$i]);
    $subJob->job\u id=$jobId;
    $subJob->name=$request->get('name')[$i];
    $subJob->size=$request->get('size')[$i];
    $subJob->medium=$request->get('medium')[$i];
    $subJob->feature=$request->get('feature')[$i];
    $subJob->qty=$request->get('qty')[$i];
    $subJob->price=$request->get('price')[$i];
    $subJob->total=$request->get('qty')[$i]*$request->get('price')[$i];
    $subJob->save();
    }
    }
    
    问题在于如何将数据发送到后端。看起来,您的分组是按属性(一个
    id
    s数组,然后是
    name
    s数组等等)而不是按“类”(一个包含所有属性的元素数组:
    id
    name
    ,…)进行的

    所以,你可以用两种方法来解决这个问题

  • 改进在前端收集数据并将其发送到后端的方式(推荐)
  • 按现在的方式处理后面的数据
  • 对于第一种方法,有几个指南/教程可以帮助您。因此,让我们继续第二种方法

    公共功能更新(请求$Request,$jobId)
    {
    /**这应该是输出2*/
    $size=count(collect($request)->get('id');
    //Try:dd($size);
    对于($i=0;$i<$size;$i++)
    {
    $subJob=subJob::Find($request->get('id')[$i]);
    $subJob->job\u id=$jobId;
    $subJob->name=$request->get('name')[$i];
    $subJob->size=$request->get('size')[$i];
    $subJob->medium=$request->get('medium')[$i];
    $subJob->feature=$request->get('feature')[$i];
    $subJob->qty=$request->get('qty')[$i];
    $subJob->price=$request->get('price')[$i];
    $subJob->total=$request->get('qty')[$i]*$request->get('price')[$i];
    $subJob->save();
    }
    }
    
    直接从您的问题“如何计算所附屏幕截图的阵列数量”

    根据你的问题,这里是你如何做到这一点的

    $arrayCount = 0;
    
    foreach ($request->request as $req)
    {
    
        // this will check for array and check the array has 2 elements
        if (is_array($req) && is_array($req) == 2)
        {
            // your logic here
        }
    }
    
    我在这里做的是,获取请求对象的request属性。这允许我遍历请求对象中的每个属性。然后我只是检查属性是否为数组。
    但在这里,我只向您展示了如何进入阵列。一旦您进入循环中的阵列,您可以直接从您的问题“如何计算所附屏幕截图的阵列数”中执行任何您想要的操作

    根据你的问题,这里是你如何做到这一点的

    $arrayCount = 0;
    
    foreach ($request->request as $req)
    {
    
        // this will check for array and check the array has 2 elements
        if (is_array($req) && is_array($req) == 2)
        {
            // your logic here
        }
    }
    
    我在这里做的是,获取请求对象的request属性。这允许我遍历请求对象中的每个属性。然后我只是检查属性是否为数组。
    但这里我只向您展示了如何进入数组。一旦您进入循环中的数组,您可以做任何您想做的事情

    您是否尝试过
    first()
    ?。此外,您的问题不清楚您到底想做什么achieve@OluwatobiSamuelOmisakin我需要用从这些数组中获得的输入更新我的数据库()不起作用,我想我需要看一下Laravel-Collections文档。您是否尝试过
    first()
    ?。此外,您的问题不清楚您到底想做什么achieve@OluwatobiSamuelOmisakin我需要用从这些数组中得到的输入来更新我的数据库