У меня есть следующий многомерный массив, где родительские ключи представляют собой длинные хэши, каждая из которых содержит несколько пар ключ => значение, что приводит к следующей структуре данных PHP:
Array ([riCQTaeQmczjR7ynRB30wzCghOhN3T82h9qXYl8M] => Array ([Метка времени] => 2018-03-28 21:47:53 [Как тебя зовут?] => Альберто [когда ты хочешь забронировать] => завтра) [wD5bb9lNTrQFJMFFMFFMFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFFHFHMFFHFHMFHMFFHFHMFFHFHMFHMFHFHMFFHFHMFFHFHMFHFHMFHFHMFFHFHMFFHFHMFFHFFR Array ([Timestamp] => 2018-03-28 21:48:10 [Как вас зовут?] => AAA [Когда вы хотите забронировать] => на следующей неделе) [02tgD3iOH2pIyrku1m9uukwwFeISHis7C9TlMaPR] => Array ([Timestamp] = > 2018-03-28 23:30:16 [Как вас зовут?] => Освальдо [Когда вы хотите забронировать] => на следующей неделе) [aPjjcwhr2HeuFOaw3Jc0ijsf6C5VtAxOquSduIOP] => Array ([Timestamp] => 2018-03-28 23:31:16 [Как тебя зовут?] => Джонни [Когда ты хочешь забронировать] => завтра))
Структура данных выше также может быть визуально представлена как:
Обратите внимание, что каждый из родительских элементов (то есть длинных хэшей) всегда содержит те же ключи, что и все остальные (в этом примере каждый родительский элемент содержит 1 метку времени и 2 пары вопрос-ответ).
Моя цель — преобразовать этот многомерный массив в следующий табличный формат, который можно легко экспортировать в CSV-файл:
"Timestamp","What's your name?","When do you want to book?""2018-03-28 21:47:53","Lorna","tomorrow""2018-03-28 21:48:10","Jake","next week""2018-03-28 23:30:16","Sarah","next week""2018-03-28 23:31:16","Johnny","tomorrow"
Ключи массива становятся «заголовком», а каждая строка представляет один ответ.
Я думаю, что одним из способов будет использование функции PHP array_map()
но я не смог достичь желаемого результата. Любая идея / совет о том, как это сделать?
<?php
$data = [
[
'Timestamp' => '2018-03-01',
'What\'s your name?' => 'Johnny',
'When do you want to book?' => 'tomorrow'
],
[
'Timestamp' => '2018-03-01',
'What\'s your name?' => 'Johnny',
'When do you want to book?' => 'tomorrow'
],
[
'Timestamp' => '2018-03-01',
'What\'s your name?' => 'Johnny',
'When do you want to book?' => 'tomorrow'
],
];
// get the headers
$headers = array_keys(array_values($data)[0]);
// open the file
$resource = fopen('output.csv', 'w');
// put the headers
fputcsv($resource, $headers);
// put the data
foreach ($data as $d) {
fputcsv($resource, $d);
}
// close the file
fclose($resource);
Других решений пока нет …