无法将值从do ... while循环中推送到数组中

时间:2010-11-18 06:14:59

标签: php arrays loops

我搜索过并搜索过,找不到有类似问题的人。

我有一个带有代码的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 :(得分:0)

尝试

Create empty arrays

Loop

Get averages

按此顺序。确保在获得平均值之前发生循环。

并使用除了...之外的任何类型的循环,因此,由于Mayhem所说的原因,您在第一次迭代时拥有数据。