dongsui0929 2015-02-25 07:09
浏览 66
已采纳

在php中读取CSV时,在所有数组中实现第一个数组键

if (move_uploaded_file($uploadData['tmp_name'], $uploadPath)) {
            $files = fopen($uploadPath, 'r');
            while (($line = fgetcsv($files, 0, ",")) !== FALSE) {
            //$line = array_combine($line,$line); try but not working
            pr($line);
            }
}

I am getting output like that -

Array
(
    [Company Name] => Company Name
    [Primary First] => Primary First
    [Primary Last] => Primary Last
)
Array
(
    [0] => Naturfrisk Energy Bar
    [1] => Aksel
    [2] => Romer
)
Array
(
    [0] => The Code Devloper
    [1] => vikas
    [2] => Tyagi
)

But i need Output like that-

Array
(
    [Company Name] => Company Name
    [Primary First] => Primary First
    [Primary Last] => Primary Last
)
Array
(
    [Company Name] => Naturfrisk Energy Bar
    [Primary First] => Aksel
    [Primary Last] => Romer
)
Array
(
    [Company Name] => The Code Devloper
    [Primary First] => vikas
    [Primary Last] => Tyagi
)
  • 写回答

2条回答 默认 最新

  • dongluolie3487 2015-02-25 07:22
    关注

    I think you should store first array returned by fgetcsv for keys for later arrays as the first line would be header line and you want to use that for keys in subsequent arrays being returned.

    So something like this would work

    if (move_uploaded_file($uploadData['tmp_name'], $uploadPath)) {
                $files = fopen($uploadPath, 'r');
                $lineNo = 1;
                while (($line = fgetcsv($files, 0, ",")) !== FALSE) {
                    if($lineNo == 1)
                       $arrHeader = $line;
                    else
                       $line = array_combine($arrHeader, $line);
    
                    pr($line);
                    $lineNo++;
                }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?