2016-08-01 2 views
-1

Я хочу создать новый .csv-файл (без открытия исходного файла сначала через fopen). До сих пор я попытался это:Создайте файл CSV с PHP

$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 :') 

Мои вопросы:

  1. Как я могу изменить массив 2d в CSV?

Очень нужна ваша помощь :(Спасибо так много: ")

ответ

2

Использование fopen с w создаст файл, если не существует:

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

Если вы не например fputcsv и fopen Вы можете использовать эту страницу:

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

Надеюсь, это поможет вам.

+0

Мне жаль забыть об изменении, я использую массив многомерных, что мне делать? : ') – barney

+0

Просто обновите вопрос своим массивом, и я помогу вам в лучшей альтернативе;) –

+0

OMG, большое вам спасибо:' '') есть хороший день! – barney

0

Вы можете использовать ниже код

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

Для получения более подробного чтения Руководства по PHP о CSV-файле. http://php.net/manual/en/function.fputcsv.php

Смежные вопросы