自定义foreach与各自的标题

时间:2015-02-12 07:51:21

标签: php for-loop foreach

enter image description here

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

我有一个名为Supplier Name的专栏

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

所以我需要一个标题

我预期的ouptut是

ABS代理商

供应商名称 - 此处应为标题

  • ABS代理商 - 标题
    1. ABS代理商
    2. ABS代理商

mycode

   @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    

1 个答案:

答案 0 :(得分:0)

您可以将supplier_name存储在变量中,在循环中只需比较变量和供应商名称即可。一个简单的方法是这样的,因为您正在使用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
    }
}