2016-08-01 22 views
-1

Ich möchte eine neue .csv-Datei erstellen (ohne die Rohdatei zuerst über fopen zu öffnen). Bisher habe ich versucht, dies:CSV-Datei mit PHP erstellen

$list[] = array 
(
    "Name" => "John" 
    "Gender" => "M", 
    "Age" => "21", 
); 
    $timestamp0  = date("Y-m-d H:i:sa",time()); 
    $datetime  = new DateTime($timestamp0); 
    $datetime->setTimezone(new DateTimeZone('Asia/Jakarta')); 
    $timestamp  = $datetime->format("Y-m-d_H-i"); 

    $filename = __DIR__ . "/file/" . $timestamp . ".csv"; 

    $header = array ("name","gender","age"); 
    file_put_contents($filename, implode ("\n", $list)); // error here bcs array given :') 

Meine Fragen sind:

  1. Wie kann ich Array 2d ändern csv?

benötigen Sehr Ihre Hilfe :(Vielen Dank: ")

Antwort

2

Mit fopen mit w wird die Datei erstellen, wenn nicht vorhanden ist:

$list = [ 
    ["Name" => "John", "Gender" => "M"], 
    ["Name" => "Doe", "Gender" => "M"], 
    ["Name" => "Sara", "Gender" => "F"] 
]; 

$fp = fopen($filename, 'w'); 
//Write the header 
fputcsv($fp, array_keys($list[0])); 
//Write fields 
foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 
fclose($fp); 

Wenn Sie nicht tun wie fputcsv und fopen können Sie diese Alternative verwenden:

$list = [ 
    ["Name" => "John", "Gender" => "M"], 
    ["Name" => "Doe", "Gender" => "M"], 
    ["Name" => "Sara", "Gender" => "F"] 
]; 

$csvArray = ["header" => implode (",", array_keys($list[0]))] + array_map(function($item) { 
    return implode (",", $item); 
}, $list); 

file_put_contents($filename, implode ("\n", $csvArray)); 

Ich hoffe, dass dir das weiterhilft.

+0

Ich Entschuldigung vergessen zu ändern, ich benutze Array multidimensional, was soll ich tun? : ') – barney

+0

Aktualisieren Sie einfach die Frage mit Ihrem Array und ich werde Ihnen in einer besseren Alternative helfen;) –

+0

OMG, vielen Dank:' '') Guten Tag! – barney

0

können Sie unter Code

$list[]=array ("name","gender","age"); // push header here 
$list[] = array("John","M","21"); // push record here 

$timestamp0  = date("Y-m-d H:i:sa",time()); 
$datetime  = new DateTime($timestamp0); 
$datetime->setTimezone(new DateTimeZone('Asia/Jakarta')); 
$timestamp  = $datetime->format("Y-m-d_H-i"); 

$filename = __DIR__ . "/file/" . $timestamp . ".csv"; 

$fp = fopen($filename, 'w'); 
foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 
fclose($fp); 

Weitere Einzelheiten lesen PHP Handbuch über CSV-Datei verwenden. http://php.net/manual/en/function.fputcsv.php