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


Implement first array key in all array while read CSV in php

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);
            }
}

我得到这样的输出 -

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
)

但我需要这样的输出——

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
)

我认为您应该存储 fgetcsv 返回的第一个数组,以便为以后的数组提供键,因为第一行将是标题行,并且您希望将其用于返回的后续数组中的键。

所以这样的事情会起作用

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++;
            }
}
您可以使用

array_combine()但首先必须具有标头:

$headers = fgetcsv($files, 0, ",");
while (($line = fgetcsv($files, 0, ",")) !== FALSE) {
    $line = array_combine($headers, $line);
    print_r($line);
}

并输出:

Array
(
    [Company Name] => Naturfrisk Energy Bar
    [Primary First] => Aksel
    [Primary Last] => Romer
)