Коллеги, есть функция, которая экспортирует данные с таблицы БД в csv. Все хорошо работает пока не натыкается на ячейку, в которой находятся данные в виде json.
function process_export_csv($array, $file_name = 'data') {
if(isset($_GET['export']) && $_GET['export'] == 'csv') {
header('Content-Disposition: attachment; filename="' . $file_name . '.csv";');
header('Content-Type: application/csv; charset=UTF-8');
$csv = csv_exporter($array);
die($csv);
}
}
function csv_exporter($array) {
$result = '';
/* Экспорт заголовка */
$headers = [];
foreach(array_keys((array) reset($array)) as $value) {
$headers[] = '"' . $value . '"';
}
$result .= implode(',', $headers);
/* Данные */
foreach($array as $row) {
$result .= "\n";
$row_array = [];
foreach($row as $key => $value) {
$row_array[] = '"' . addslashes($value) . '"';
}
$result .= implode(',', $row_array);
}
return $result;
}
function csv_link_exporter($csv) {
return 'data:application/csv;charset=utf-8,' . urlencode($csv);
}
в тоже самое время - есть функция, которой экспортирую эту же таблицу БД в json:
function process_export_csv($array, $file_name = 'data') {
if(isset($_GET['export']) && $_GET['export'] == 'csv') {
header('Content-Disposition: attachment; filename="' . $file_name . '.csv";');
header('Content-Type: application/csv; charset=UTF-8');
$csv = csv_exporter($array);
die($csv);
}
}
function csv_exporter($array) {
foreach($array as $object) {
foreach($object as $key => $value) {
}
}
return csv_encode($array);
}
Есть ли способ/идеи - как можно дописать функцию для экспорта в csv, чтобы она натыкаясь на данные json -разбивала их либо на отдельные столбики, либо как-то массивом записывала в одну ячейку? В идеале, разбивать столбики на "Название таблицы/key" а в ячейку писать value.
Вот пример ячейки, на которой спотыкается функция экспорта:
{"email":"email@gmail.com","name":"Вася","phone":"+79987987987"}