【问题标题】:is it possible to combine 3 same value in different array into one?是否可以将不同数组中的 3 个相同值合并为一个?
【发布时间】:2021-10-23 04:30:03
【问题描述】:

我有几个数组包含这样的值:

Array
(
[0] => Array
    (
        [NAMA_MDS] => AGUNG RUDIYANTO               
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Kanzler Singles               
        [EC] => 247
        [OT] => 57
        [Ratio] => 4
        [SBQ] => 6586
    )

[1] => Array
    (
        [NAMA_MDS] => AGUNG RUDIYANTO               
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Yogurt Squeeze 120 GR         
        [EC] => 271
        [OT] => 103
        [Ratio] => 2
        [SBQ] => 9449
    )

[2] => Array
    (
        [NAMA_MDS] => AGUNG RUDIYANTO               
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Yoghurt Drink 250 ML          
        [EC] => 271
        [OT] => 106
        [Ratio] => 2
        [SBQ] => 4960
    )

正因为如此,当我将数据分配到我的表时,结果是这样的:

table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
<div class="table-responsive">
          <table class="table-striped" style="width: 100%;">
            <thead>
              <tr>
                <th rowspan="2">Nama Sales</th>
                <th rowspan="2" width="20%">Nama Barang</th>
                <th colspan="2">EC</th>
                <th colspan="2">OT</th>
                <th rowspan="2">Ratio</th>
                <th rowspan="2">Sales QTY</th>
                <th colspan="2">Drop Size</th>
              </tr>
              <tr>
                <!-- <th width="100%">Nama Barang</th> -->
                <th>total</th><th width="10%">% vs Call</th>
                <th>total</th><th width="10%">% vs Call</th>
<!--                 <th>Ratio</th>
                <th>Sales QTY</th> -->
                <th>Per-EC</th><th>Per-OT</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>AGUNG RUDIYANTO</td>
                <td><small>Kanzler Singles</small></td>
                <td>247</td>
                <td>100%</td>
                <td>57</td>
                <td>38%</td>
                <td>4</td>
                <td>6,586</td>
                <td>27</td>
                <td>116</td>
              </tr>
              <tr>
                <td>AGUNG RUDIYANTO</td>
                <td><small>Yogurt Squeeze 120 GR</small></td>
                <td>271</td>
                <td>100%</td>
                <td>103</td>
                <td>69%</td>
                <td>2</td>
                <td>9,449</td>
                <td>35</td>
                <td>92</td>
              </tr>
              <tr>
                <td>AGUNG RUDIYANTO</td>
                <td><small>Yoghurt Drink 250 ML</small></td>
                <td>271</td>
                <td>100%</td>
                <td>106</td>
                <td>71%</td>
                <td>2</td>
                <td>4,960</td>
                <td>19</td>
                <td>47</td>
              </tr>
             </tbody>
            </table>
           </div>

而我想要实现的是拥有这样的表格:

table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
<div class="table-responsive" style="overflow: scroll;height: 500px;">
          <table class="table-striped" style="width: 100%;">
            <thead>
              <tr>
                <th rowspan="2">Nama Sales</th>
                <th rowspan="2" width="20%">Nama Barang</th>
                <th colspan="2">EC</th>
                <th colspan="2">OT</th>
                <th rowspan="2">Ratio</th>
                <th rowspan="2">Sales QTY</th>
                <th colspan="2">Drop Size</th>
              </tr>
              <tr>
                <!-- <th width="100%">Nama Barang</th> -->
                <th>total</th><th width="10%">% vs Call</th>
                <th>total</th><th width="10%">% vs Call</th>
<!--                 <th>Ratio</th>
                <th>Sales QTY</th> -->
                <th>Per-EC</th><th>Per-OT</th>
              </tr>
            </thead>
            <tbody>
            <tr>
                <td rowspan="3">AGUNG RUDIYANTO</td>
                <td><small>Kanzler Singles</small></td>
                <td>247</td>
                <td>100%</td>
                <td>57</td>
                <td>38%</td>
                <td>4</td>
                <td>6,586</td>
                <td>27</td>
                <td>116</td>
              </tr>
              <tr>
                <td><small>Yogurt Squeeze 120 GR</small></td>
                <td>271</td>
                <td>100%</td>
                <td>103</td>
                <td>69%</td>
                <td>2</td>
                <td>9,449</td>
                <td>35</td>
                <td>92</td>
              </tr>
              <tr>
                <td><small>Yoghurt Drink 250 ML</small></td>
                <td>271</td>
                <td>100%</td>
                <td>106</td>
                <td>71%</td>
                <td>2</td>
                <td>4,960</td>
                <td>19</td>
                <td>47</td>
              </tr>

如果我错了,我猜并纠正我,我必须使数组看起来像这样才能实现我想要的表格:

Array
(
[NAMA_MDS] => AGUNG RUDIYANTO =>
   [0] => Array
    (              
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Kanzler Singles               
        [EC] => 247
        [OT] => 57
        [Ratio] => 4
        [SBQ] => 6586
    )

[1] => Array
    (             
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Yogurt Squeeze 120 GR         
        [EC] => 271
        [OT] => 103
        [Ratio] => 2
        [SBQ] => 9449
    )

[2] => Array
    (          
        [Call] => 182
        [RO] => 151
        [NAMA_SGRUP] => Yoghurt Drink 250 ML          
        [EC] => 271
        [OT] => 106
        [Ratio] => 2
        [SBQ] => 4960
    )

或类似的东西,但我不知道如何实现我想要的表格。 有人可以告诉我如何拥有我试图通过更改数组形状或不更改数组形状来实现它的表吗?

这是我的控制器:

public function test(){
    $data['db_default'] =  $this->db_default->default();
    $data['report2'] = $this->m_report->table2($data['db_default'][0]['databasename']);
    $data['content'] = 'tempelates/BKL/Report_B';
    $this->load->view('Tempelate',$data);
}

这是我认为的代码:

            <tbody>
          <?php foreach($report2->result_array() as $row){
            $Call = $row['Call'];
            $vsc = ceil(($row['EC']*100)/$Call);
            $RO = $row['RO'];
            $vsr = ceil(($row['OT']*100)/$RO)?>
          <tr>
            <td><?=$row['NAMA_MDS']?></td>
            <td><small><?=$row['NAMA_SGRUP']?></small></td>
            <td><?=$row['EC']?></td>
            <td><?php if($vsc >= 100){echo '100%';}else{echo $vsc.'%';}?></td>
            <td><?=$row['OT']?></td>
            <td><?php if($vsr >= 100){echo '100%';}else{echo $vsr.'%';}?></td>
            <td><?=$row['Ratio']?></td>
            <td><?=number_format($row['SBQ'])?></td>
            <td><?=ceil($row['SBQ']/$row['EC'])?></td>
            <td><?=ceil($row['SBQ']/$row['OT'])?></td>
          </tr>
        <?php }?>
        </tbody>

【问题讨论】:

    标签: php html arrays codeigniter foreach


    【解决方案1】:

    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    $report =array(
    
    'AGUNG RUDIYANTO'=>array(
        array('NAMA_MDS' =>'AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
       array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
         array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),),
        'AGUNG ssRUDIYANTO'=>array(
        array('NAMA_MDS' =>'AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
       array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
         array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),),
        
        );
        
        
    ?>
    <div class="table-responsive">
              <table class="table-striped" style="width: 100%;">
                <thead>
                  <tr>
                    <th rowspan="2">Nama Sales</th>
                    <th rowspan="2" width="20%">Nama Barang</th>
                    <th colspan="2">EC</th>
                    <th colspan="2">OT</th>
                    <th rowspan="2">Ratio</th>
                    <th rowspan="2">Sales QTY</th>
                    <th colspan="2">Drop Size</th>
                  </tr>
                  <tr>
                    <!-- <th width="100%">Nama Barang</th> -->
                    <th>total</th><th width="10%">% vs Call</th>
                    <th>total</th><th width="10%">% vs Call</th>
    <!--                 <th>Ratio</th>
                    <th>Sales QTY</th> -->
                    <th>Per-EC</th><th>Per-OT</th>
                  </tr>
                </thead>
              
     <tbody>
              <?php
              $html = '';
              foreach($report as $key => $row1){?>
                <?php foreach($row1 as $row){
                 $Call = $row['Call'];
                $vsc = ceil(($row['EC']*100)/$Call);
                $RO = $row['RO'];
                $vsr = ceil(($row['OT']*100)/$RO);
              
    ?>
         <tr>
            <?php if($key != $html){
            ?>
                <td rowspan="<?php echo count($report[$key]); ?>">
                    <?php echo $key ?></td>
                <?php }
                $html =$key;
                ?>
                 
           <td><small><?=$row['NAMA_SGRUP']?></small></td>
                <td><?=$row['EC']?></td>
                <td><?php if($vsc >= 100){echo '100%';}else{echo $vsc.'%';}?></td>
                <td><?=$row['OT']?></td>
                <td><?php if($vsr >= 100){echo '100%';}else{echo $vsr.'%';}?></td>
                <td><?=$row['Ratio']?></td>
                <td><?=number_format($row['SBQ'])?></td>
                <td><?=ceil($row['SBQ']/$row['EC'])?></td>
                <td><?=ceil($row['SBQ']/$row['OT'])?></td>
                           </tr>
                <?php }?>
            <?php }?>
           </tbody>
    </body>
    </html>

    【讨论】:

    • 再次感谢你的回复 habibi .. 但我不明白我只是试图遵循你的逻辑,它给出了一个带有错误Cannot use object of type CI_DB_sqlsrv_result as array 的凌乱表格,因为我使用的是 result_array 。但错误来自这一行: 。很抱歉问太多来打扰你:)
    • result_array() ;第一个循环将您的数组放入控制器中并使其像我使用的数组一样;或更改您的选择或将您使用的查询发送给我
    【解决方案2】:
    <?php
    
    $report = 
    array(
    
       array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
       array
        (   'NAMA_MDS' =>' AGUNG RUDIYANTO' ,           
            'Call' => 182,
            'RO' => 151,
            'NAMA_SGRUP' =>   'kkkk'  ,           
            'EC' => 247,
            'OT' => 57,
            'Ratio' => 4,
            'SBQ' => 6586,
        ),
        );
    
    $html = '';//here
    ?>
    <div class="table-responsive">
              <table class="table-striped" style="width: 100%;">
                <thead>
                  <tr>
                    <th rowspan="2">Nama Sales</th>
                    <th rowspan="2" width="20%">Nama Barang</th>
                    <th colspan="2">EC</th>
                    <th colspan="2">OT</th>
                    <th rowspan="2">Ratio</th>
                    <th rowspan="2">Sales QTY</th>
                    <th colspan="2">Drop Size</th>
                  </tr>
                  <tr>
                    <!-- <th width="100%">Nama Barang</th> -->
                    <th>total</th><th width="10%">% vs Call</th>
                    <th>total</th><th width="10%">% vs Call</th>
    <!--                 <th>Ratio</th>
                    <th>Sales QTY</th> -->
                    <th>Per-EC</th><th>Per-OT</th>
                  </tr>
                </thead>
              
     <tbody>
              <?php foreach($report as $row){
                $Call = $row['Call'];
                $vsc = ceil(($row['EC']*100)/$Call);
                $RO = $row['RO'];
                $vsr = ceil(($row['OT']*100)/$RO);
              
    ?>
              <tr>
    <?php if($html != $row['NAMA_MDS']){?>//and here
                <td rowspan="3"><?=$row['NAMA_MDS']?></td>
    <?php }
    $html = $row['NAMA_MDS'];?>
    
                <td><small><?=$row['NAMA_SGRUP']?></small></td>
                <td><?=$row['EC']?></td>
                <td><?php if($vsc >= 100){echo '100%';}else{echo $vsc.'%';}?></td>
                <td><?=$row['OT']?></td>
                <td><?php if($vsr >= 100){echo '100%';}else{echo $vsr.'%';}?></td>
                <td><?=$row['Ratio']?></td>
                <td><?=number_format($row['SBQ'])?></td>
                <td><?=ceil($row['SBQ']/$row['EC'])?></td>
                <td><?=ceil($row['SBQ']/$row['OT'])?></td>
              </tr>
            <?php }?>
           </tbody>
    

    如果你想让行跨度计数动态使用你列出的最后一个数组,索引计数和相同的方式

    【讨论】:

    • 如果您不介意,您能否举一些在我的情况下为动态行跨度计算索引的示例......我会很感激...... :)
    猜你喜欢
    • 2015-06-08
    • 2022-12-17
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多