I need to convert a CSV file to JSON on the server using PHP. I am using this script which works:

function csvToJSON($csv) {
    $rows = explode("\n", $csv);

    $i = 0;
    $len = count($rows);
    $json = "{\n" . '    "data" : [';
    foreach ($rows as $row) {
        $cols = explode(',', $row);
        $json .= "\n        {\n";
        $json .= '            "var0" : "' . $cols[0] . "\",\n";
        $json .= '            "var1" : "' . $cols[1] . "\",\n";
        $json .= '            "var2" : "' . $cols[2] . "\",\n";
        $json .= '            "var3" : "' . $cols[3] . "\",\n";
        $json .= '            "var4" : "' . $cols[4] . "\",\n";
        $json .= '            "var5" : "' . $cols[5] . "\",\n";
        $json .= '            "var6" : "' . $cols[6] . "\",\n";
        $json .= '            "var7" : "' . $cols[7] . "\",\n";
        $json .= '            "var8" : "' . $cols[8] . "\",\n";
        $json .= '            "var9" : "' . $cols[9] . "\",\n";
        $json .= '            "var10" : "' . $cols[10] . '"';
        $json .= "\n        }";

        if ($i !== $len - 1) {
            $json .= ',';
        }

        $i++;
    }
    $json .= "\n    ]\n}";

    return $json;
}

$json = csvToJSON($csv);
$json = preg_replace('/[ \n]/', '', $json);

header('Content-Type: text/plain');
header('Cache-Control: no-cache');
echo $json;

The $csv variable is a string resulting from a cURL request which returns the CSV content.

I am sure this is not the most efficient PHP code to do it because I am a beginner developer and my knowledge of PHP is low. Is there a better, more efficient way to convert CSV to JSON using PHP?

Thanks in advance.

Note. I am aware that I am adding whitespace and then removing it, I do this so I can have the option to return "readable" JSON by removing the line $json = preg_replace('/[ \n]/', '', $

Edit
Report