Невозможно вставить значения в массив из цикла do ... while - PullRequest
0 голосов
/ 18 ноября 2010

Я искал и искал и не могу найти никого с подобной проблемой.

У меня есть цикл do ... while с кодом для переноса значений из каждой записи в четыре разных массива. Все выглядит хорошо, за исключением того, что массивы пусты (дает мне предупреждение: деление на ноль).

Я могу отобразить четыре значения для каждой записи, а также метку времени Unix для каждой даты заказа в цикле, поэтому значения верны для каждой записи, но массивы пусты. Я попытался закомментировать условный оператор вокруг блока кода array [] в цикле, но без разницы.

Также попробовал вместо этого array_push; опять нет разницы.

Я новичок, и я не могу понять, почему массивы не заполняются.

Это код вне цикла:

// set timezone and $one_year and $year_limit variables (used in the do-while loop)
ini_set('date.timezone', 'America/Los_Angeles');
       $one_year = 60 * 60 * 24 * 365;
       $year_limit = strtotime("-1 year");

// create the empty arrays for each rating
$total_vals = array();
$food_vals = array();
$service_vals = array();
$atmo_vals = array();

// get the average for each rating
$total_avg = round((array_sum($total_vals)) / (count($total_vals)));
$food_avg = round((array_sum($food_vals)) / (count($food_vals)));
$service_avg = round((array_sum($service_vals)) / (count($service_vals)));
$atmo_avg = round((array_sum($atmo_vals)) / (count($atmo_vals)));

Это цикл:

<?php do { ?>
  <?php 
  // create unix timestamp from order_date
  $pub_date = strtotime($row_getReviews['order_date']);

  // add rate values from each record to the arrays if less than 1 year old
  if($pub_date - $one_year < $year_limit) { // tried commenting the condition out
 $total_vals[] = $row_getReviews['total_rate'];
 $food_vals[] = $row_getReviews['food_rate'];
 $service_vals[] = $row_getReviews['service_rate'];
 $atmo_vals[] = $row_getReviews['atmo_rate'];
 }
  ?>    

<!-- html, css, etc here to display text and more -->

<?php } while ($row_getReviews = mysql_fetch_assoc($getReviews)); ?>

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 18 ноября 2010

Попробуйте

Create empty arrays

Loop

Get averages

В таком порядке. Убедитесь, что цикл происходит до того, как вы получите средние значения.

И используйте любой вид цикла, кроме do ... while, чтобы у вас были данные на первой итерации по причинам, указанным Mayhem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...