dougouqin0763 2014-02-18 12:04
浏览 16
已采纳

指导我优化我的PHP代码,用数组中的空数据填充缺失值[关闭]

I have the array like

array(
    [0] => array(
              [a] => r1,
              [b] => c1,
              [c] => d1,
           ),
    [1] => array(
              [a] => r1,
              [b] => c1,
              [c] => d2,
           ),
    [2] => array(
              [a] => r1,
              [b] => c1,
              [c] => d3,
           ),
    [3] => array(
              [a] => r1,
              [b] => c2,
              [c] => d1,
           ),
    [4] => array(
              [a] => r1,
              [b] => c2,
              [c] => d3,
           ),
    [5] => array(
              [a] => r1,
              [b] => c3,
              [c] => d1,
           )
)

I am getting the output like

-------------------------------------
|   C1,D1   |   C1,D2   |   C1,D3   |
-------------------------------------
|     -     |   C2,D2   |     -     |
-------------------------------------
|   C3,D1   |     -     |     -     |
-------------------------------------

Please help me to optimize the code

My code :

$count = 0;
  for($i=1; $i<=3; $i++){
    for($j=1; $j<=3; $j++){
      $data[$count] = array(
        'a'     => '',
        'b'     => 'D'.$j,
        'c'     => 'C'.$i
      );
      for($r=0; $r<9; $r++){
      if(isset($rows[$r]) && $rows[$r]['b'] == 'C'.$i && $rows[$r]['c'] == 'D'.$j) {
        $data[$count] = array(
          'a'       => $rows[$r]['a'],
          'b'       => $rows[$r]['b'],
          'c'       => $rows[$r]['c']
        );
      }
    }
    $count++;
  }
}
  • 写回答

1条回答 默认 最新

  • dqkkrt8860 2014-02-18 12:10
    关注
    <?php
    for($i=1; $i<=3; $i++)
    {
        for($j=1; $j<=3; $j++)
        {
            $newData = null;
    
            // Avoid multiple calls to $rows[$i] because on each time it must browse the array,
            // use foreach instead. Pass by reference avoids copy of current row
            foreach($rows as & $iRow)
            {
                if($iRow['b'] == 'C'.$i && $iRow['c'] == 'D'.$j)
                {
                    // Copy row bvecause it is the same structure
                    $newData = $iRow;
    
                    // No need to continue the $rows loop
                    break;
                }
            }
    
            // If no results found
            if ($newData == null)
            {
                $newData = array(
                    'a'     => '',
                    'b'     => 'D'.$j,
                    'c'     => 'C'.$i
                    );
            }
    
            // Auto increment index
            $data[] = $newData;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口