Проблема с циклом Foreach и вывод

#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'] .