doupaoshu8334 2018-11-27 20:28
浏览 37

如何从PHP中导入的CSV重新排序列标题?

I am trying to reorder columns that are in the CSV file that I am importing in PHP. The order should be ID, Carrier, TrackingNumber, ShippingDate

My code looks like this:

 $rename = array('Customer PO#'=>'ID', 'Ship Via'=>'Carrier', 'Tracking Number'=>'TrackingNumber', 'Ship Date'=>'ShippingDate'); 
 $csv = array_map('str_getcsv', file('file.csv')); 

 foreach($csv[0] as $col => $colname) {
     if(!empty($rename[$colname])) $csv[0][$col] = $rename[$colname];
 }
 array_walk($csv, function(&$a) use ($csv) { 
     $a = array_combine($csv[0], $a);

     if (array_key_exists('Product ID', $a)) {
         unset($a['Product ID']);
     }
     if (array_key_exists('Customer Name', $a)) {
         unset($a['Customer Name']);
     }
 }); 

var_dump($csv);

My array looks like this:

  [1]=>
  array(4) {
    ["ShippingDate"]=>
    string(10) "11/21/2018"
    ["ID"]=>
    string(5) "59098"
    ["Carrier"]=>
    string(16) "USPS First Class"
    ["TrackingNumber"]=>
    string(22) "940011020088289578733355"
  }
  • 写回答

3条回答 默认 最新

  • duanfu3634 2018-11-27 20:35
    关注

    If that is your array all you need to do is move the ShippingDate as the last item.

    Create a temp value of it, unset the array value then add it again to make it the last item.

    foreach($arr as $key => $sub){
        $temp = $sub['ShippingDate'];
        unset($arr[$key]['ShippingDate']);
        $arr[$key]['ShippingDate'] = $temp;
    }
    

    Or use array_shift:

    foreach($arr as &$sub){
        $sub['ShippingDate'] = array_shift($sub);
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向