使用PHP将CSV转换为JSON并将特定键值更改为布尔值或字符串

使用PHP将CSV转换为JSON并将特定键值更改为布尔值或字符串,php,json,csv,Php,Json,Csv,是否有一种方法可以将特定的键值更改为布尔值或字符串。转换将所有数据更改为字符串。例如,键值“Date”应该是整数而不是字符串 <?php function csvToJson($fname) { if (!($fp = fopen($fname, 'r') )) { die("Can't open file"); } $key = fgetcsv($fp, "1024", ","); $

是否有一种方法可以将特定的键值更改为布尔值或字符串。转换将所有数据更改为字符串。例如,键值“Date”应该是整数而不是字符串

<?php 

    function csvToJson($fname) {
        if (!($fp = fopen($fname, 'r') )) {
            die("Can't open file");
        }

        $key = fgetcsv($fp, "1024", ",");

        $json = array();
            while ($row = fgetcsv($fp, "1024", ",")) {
                $json[] = array_combine($key, $row);
        }

        fclose($fp);

        foreach ( $json as $k=>$v ) {


            $json[$k]['dateRequested']     = $json[$k]['DATE']; 
            $json[$k]['assignedAgent']     = $json[$k]['AGENT'];
            $json[$k]['finalCompanyName']  = $json[$k]['COMPANY NAME'];

            unset($json[$k]['DATE']);
            unset($json[$k]['AGENT']);
            unset($json[$k]['COMPANY NAME']);


        }

        return json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

    }

 ?>



<?php
$json_data = csvToJson("lms.csv");
?>
试试这个:

while ($row = fgetcsv($fp, "1024", ",")) {
// here $row contains all the columns in it in a numeric array
// Means 0 => first column of csv, 2 => second column of csv and so on

// you can convert any specific column value like
$json[] = array($row[0], setype($row[0], "string"), and so on);
}您可以这样做:

$json[$k]['dateRequested']     = (int)($json[$k]['DATE']); 
$json[$k]['assignedAgent']     = $json[$k]['AGENT'];
$json[$k]['finalCompanyName']  = $json[$k]['COMPANY NAME'];
示例用法:

$int = (int)(123);
$bool = (bool)(1);
$string = (string)(1234);

var_dump($int);
var_dump($bool);
var_dump($string);

如果它是一个特定的“键值”而不是一个列该怎么办?放置一个if块来检查键值对并执行任何您想执行的操作我尝试了您的解决方案,不幸的是,当使用整数时,它会将值变为0这是日期16-09-16的样子该值变为0是因为-character。。你想要什么具体的输出?由于破折号(-)字符,无法将16-09-16转换为整数