【问题标题】:custom foreach with respective title具有各自标题的自定义 foreach
【发布时间】:2015-02-12 07:51:20
【问题描述】:

我有循环在这里查看图片以供参考..

我有名为供应商名称的列

例如有两行同一个供应商名称

所以我需要一个标题

我的预期输出是

ABS 机构

供应商名称 - 这里应该是标题

  • ABS 机构 - 标题
    1. ABS 机构
    2. ABS 机构

我的代码在这里

   @foreach($prsdkgrids as $prsdkgrid)
                 <?php if($prsdkgrid->SupplierName == $prsdkgrid->SupplierName){ $SupplierName[] = $prsdkgrid->SupplierName; } ?>
                 @endforeach    

@foreach($prsdkgrids as $prsdkgrid)
                 <?php  if(count($SupplierName) == $SupplierName[$f]) { }else{  echo $f."<tr><td><h3 style='font-size: 15px;'>$prsdkgrid->SupplierName</h3></td></tr>"; } ?>
                 <tr class="psr_table1_tr" id="PSupdetID<?php echo $prsdkgrid->PSupdetID; ?>" <?php if($prsdkgrid->ApprovalStatus == 1){ echo 'style="background: #d9edf7;"';} ?>  >
                 <td> {{ Form::label('', $prsdkgrid->ArticleNo) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->Size) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->SpecialDesc) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->QtyExp) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->Coloring) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->Packaging) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->Packing) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->TargetPrice) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->SupPrice) }} </td>
                 <td> {{ Form::label('', $prsdkgrid->SupplierName) }}</td>
                 <td> {{ Form::label('', $prsdkgrid->SupComments) }} </td>
                 <td> <?php if($prsdkgrid->ApprovalStatus == 0){  ?><div align="center" class="floatleft approvedk" id="ApprvedbyResp<?php echo $prsdkgrid->PSupdetID; ?>">  
                 <li><a class="prs_add_link" href="#"><input class="save_btn Approve"  type="button" onclick="ApprvedbyResp(<?php echo $prsdkgrid->PSupdetID; ?>)" value="Approve"></a></li></div><?php } ?> </td>
                 </tr> <?php $f++; ?>
                 @endforeach    

【问题讨论】:

    标签: php for-loop foreach


    【解决方案1】:

    您可以将供应商名称存储在一个变量中,并且在循环中您可以只比较变量和供应商名称。一个简单的方法是这样的,因为您使用的是foreach()

    $tmp_supplier_name = '';
    
    foreach($prsdkgrids as $prsdkgrid){
    
      echo ($tmp_supplier_name != $prsdkgrid->supplier_name) ? '<tr>SUppliername</tr>' : ''; //compare
    
      $tmp_supplier_name = $prsdkgrid->supplier_name; //store the suppliername that was compared
    
    }
    

    或者另一种方法是尝试操作你的数组,它应该是这样的,可读性很强。

    Array(
      ['supplierA'] =>
              Array(
                 [0] => array(.....)
                 [1] => array(.....)
              ),
      ['supplierB'] =>
             Array(
                 [0] => array(.....)
                 [1] => array(.....)
              )
    ) 
    

    重新创建数组示例:

        $new_array = [];
        $tmp_supplier_name = '';
    
    foreach($prsdkgrids as $prsdkgrid){
    
        if($tmp_supplier_name  != $prsdkgrid->supplier_name){
          $tmp_supplier_name = $prsdkgrid->supplier_name;
        }else{
          $new_array[$prsdkgrid->supplier_name]['opt1'] = $prsdkgrid->opt1;
          $new_array[$prsdkgrid->supplier_name]['opt2'] = $prsdkgrid->opt2;
          //and so on
        }
    }
    

    【讨论】:

    • 我该如何选择第二个选项?
    • @Glizzweb 请再次检查答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2020-08-15
    相关资源
    最近更新 更多