Преобразуйте многомерный массив PHP в табличный формат с ключами в виде столбцов

У меня есть следующий многомерный массив, где родительские ключи представляют собой длинные хэши, каждая из которых содержит несколько пар ключ => значение, что приводит к следующей структуре данных 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() но я не смог достичь желаемого результата. Любая идея / совет о том, как это сделать?

0

Решение

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

Другие решения

Других решений пока нет …