2017-01-17 2 views
1

Gibt es eine Möglichkeit, bestimmte Schlüsselwerte in boolean oder Zeichenfolge ändern. Die Konvertierung ändert alle Daten in eine Zeichenfolge. Zum Beispiel sollte der Schlüsselwert "Date" eine Ganzzahl anstelle einer Zeichenkette sein.Konvertieren einer CSV in JSON und Ändern bestimmter Schlüsselwerte in Boolean oder Zeichenfolge mit PHP

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

Antwort

2

Versuchen Sie folgendes:

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

}

+0

Was ist, wenn es sich um einen spezifischen "Schlüsselwert" anstelle einer Spalte handelt? – clestcruz

+0

Setzen Sie einen if-Block, um das Schlüsselwertpaar zu überprüfen und tun Sie, was Sie wollen –

1

Sie können wie folgt tun:

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

Verwendungsbeispiel:

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

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

Ich habe Ihre Lösung versucht, aber leider wird der Wert bei Verwendung der Ganzzahl auf 0 gesetzt – clestcruz

+0

Was ist der Beispielwert und das Format von DATE? –

+0

Das ist, wie das Datum aussieht 16-09-16 – clestcruz

Verwandte Themen