Я пытаюсь использовать PhpPresentation для динамического создания презентаций PowerPoint с диаграммами на PHP с использованием Google Analytics в качестве источника данных.Пропустить JavaScript-массив для PhpPresentation
Я могу сделать оба процесса самостоятельно (1. генерация pptx с использованием массива данных, определенного вручную, и 2. генерация массива в JavaScript с данными из Google Analytics Core Reporting API). Однако я не могу успешно объединить оба процесса (передать массив JavaScript и использовать его в PHP вместо моего вручную определенного массива).
1. генерации PPTX, используя определенный вручную массив в PHP
Если я использую следующий массив в качестве источника данных (как определено в PhpPresentation документации), то PowerPoint, генерируется без проблем:
$series2Data = array('20151201' => 266.1, '20151202' => 198.5, '20151203' => 271.8);
2. генерировать массив с данными из Google Analytics Core Reporting API
строковой массив генерируется с JavaScript является:
[{"date":"20151201","avgSessionDuration":266.1},{"date":"20151202","avgSessionDuration":198.5},{"date":"20151203","avgSessionDuration":271.8}]
Я передаю этот массив в PHP, который генерирует мой PowerPoint:
<form method="post" id="theform" action="Sample_05_Chart.php">
<input type="hidden" id="markers" name="markers">
<button>Submit</button>
</form>
<script>
window.onload = function() {
var form = document.getElementById('theform');
form.addEventListener('submit', function(){
var markersField = document.getElementById('markers');
var markers = data2;
markersField.value = JSON.stringify(markers);
});
}
</script>
И в PHP файл я добавил:
$markers = json_decode($_POST['markers']);
$series2Data = $markers;
Однако, созданный PowerPoint поврежден, так как я полагаю, что структура массива не соответствует ожидаемому представлению PhpPresentation.
Знания моего массива, однако, не так хороши в PHP, как в JavaScript.
Как я могу преобразовать массив, у которого var_dump выглядит
array(3) { [0]=> object(stdClass)#4 (2) { ["date"]=> string(8) "20151201" ["avgSessionDuration"]=> float(266.1) } [1]=> object(stdClass)#9 (2) { ["date"]=> string(8) "20151202" ["avgSessionDuration"]=> float(198.5) } [2]=> object(stdClass)#10 (2) { ["date"]=> string(8) "20151203" ["avgSessionDuration"]=> float(271.8) } }
в массив, как описано в пункте 1?
Совсем не смущает! Вы прекрасно это объяснили. Это кажется действительно разумным, но я не смог найти подходящее решение во всей документации, которую я прочитал о массивах в php. Конечно, это потому, что я не использовал подходящие ключевые слова для поиска. Я наконец массировал массив в php и сейчас работает! – agustin