clestcruz
clestcruz

Reputation: 1111

Convert a CSV to JSON and change specific key values into Boolean or string using PHP

Is there a way I can change specific key values into boolean or string. The conversion changes all the Data into string. For example the Key value "Date" should be an integer instead of a string.

<?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");
?>

Upvotes: 1

Views: 617

Answers (2)

Adhan Timothy Younes
Adhan Timothy Younes

Reputation: 570

You can do like this:

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

Sample usage :

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

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

Upvotes: 1

Mayank Pandeyz
Mayank Pandeyz

Reputation: 26258

Try this:

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

}

Upvotes: 2

Related Questions