#php #arrays #loops #foreach
#php #массивы #циклы #foreach
Вопрос:
Во-первых, я действительно не очень разбираюсь в PHP, и лучшие практики для использования, поэтому, пожалуйста, будьте любезны 😉
В любом случае, я борюсь с выводом Google Analytics в таблицу Java, где мой foreach для отображения страниц и просмотров страниц меня вообще не слушает :/
Просто для ясности, в массиве нет ничего плохого, при предварительном поиске значений в обычной таблице они верны. Я совершенно уверен, что с моим foreach что-то есть и, возможно, какой-то подсчет циклов или?? понятия не имеете?
Array (
[0] => Array ( [id] => http://www.google.com/analytics/feeds/data?ga:date=20110930amp;start-date=2011-09-30amp;end-date=2011-10-15 [updated] => 2011-10-14T17:00:00.001-07:00 [title] => ga:date=20110930 [dimensions] => Array ( [name] => date [value] => 20110930 ) [metrics] => Array ( [0] => Array ( [confidenceInterval] => 0.0 [name] => newVisits [type] => integer [value] => 4 )
[1] => Array ( [id] => http://www.google.com/analytics/feeds/data?date=20111001amp;start-date=2011-09-30amp;end-date=2011-10-15 [updated] => 2011-10-14T17:00:00.001-07:00 [title] => ga:date=20111001 [dimensions] => Array ( [name] => date [value] => 20111001 ) [metrics] => Array ( [0] => Array ( [confidenceInterval] => 0.0 [name] => newVisits [type] => integer [value] => 5 ) [1] => Array ( [confidenceInterval] => 0.0 [name] => uniquePageviews [type] => integer [value] => 54 ) ) )
and so on.
И теперь мое предварительное:
Примечание: metricsarray => (Уникальные просмотры страниц новые посещения), только для заголовков
<?php if (!empty($metricsArray)): ?>
<?php foreach ($metricsArray as $m): ?>
<tr>
<th><?php echo $m ?></th> <!-- To display UniqueHits and Pageviews titles-->
<?php
foreach ($account['Account']['dataPoints'] as $data): ?>
<?php if (!empty($data['metrics'])): ?>
<?php foreach ($data['metrics'] as $key => $val): ?>
<?php if (is_numeric($key)): ?>
<td><?php echo $val['value'] ?></td>
<?php elseif ($key == 'value'): ?>
<td><?php echo $val ?></td>
<?php endif ?>
<?php endforeach ?>
<?php endif ?>
<?php endforeach ?>
</tr>
<?php endforeach ?>
<?php endif ?>
Моя проблема в том, что этот вывод выглядит следующим образом:
<tr>
<th>NewVisits</th>
<td>1</td> <!-- Unique visit
<td>7</td> <!-- PageViews
<td>2</td> <!-- Uniwue hit
<td>7</td> <!-- PageViews
</tr>
<tr>
<th>NUniquePageviews</th>
<td>1</td> <!-- Unique visit
<td>7</td> <!-- PageViews
<td>2</td> <!-- Uniwue hit
<td>7</td> <!-- PageViews
</tr>
Моя проблема здесь в том, что он отображается одинаково в обоих TR, за исключением текста заголовка TH.
Он должен отображать уникальные vistis только в TR 1, а просмотры страниц — в TR2.
Спасибо за любой вклад в это..
С уважением! -Том
Ответ №1:
Какой бы ни была переменная $account
, она перебирает один и тот же массив на каждой итерации $metricsArray as $m
.
Комментарии:
1. Да, я знаю,, но я не уверен, как заставить его не зацикливаться таким образом. И выводите только уникальные значения просмотров в первом цикле и просмотров страниц во втором цикле.
2. Желательно, чтобы у вас была вся информация
$metricsArray
и вы просто перебирали ее. Как сейчас, у вас есть только заголовки в$metricsArray
и где-то раньше (в коде не показано), которые вы установили$account
, то есть массив только с одним элементом.3. Я знаю, что у меня должно быть все в metricsarray, но вы ошибаетесь насчет массива $account . Он содержит 15 элементов Google Analytics (по 1 на каждый день = 15 дней). Я не уверен, как получить значения в metricsarray, но я изучу это. Если есть какие-либо другие предложения о том, как подсчитывать или еще что-то, значения цикла, чтобы отобразить их правильно из массива $ account??
4. о, извините, я имел в виду, что есть только один элемент
$account['Account']['dataPoints']
.