我搜索过并搜索过,找不到有类似问题的人。
我有一个带有代码的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)); ?>
非常感谢任何帮助!
答案 0 :(得分:0)
尝试
Create empty arrays
Loop
Get averages
按此顺序。确保在获得平均值之前发生循环。
并使用除了...之外的任何类型的循环,因此,由于Mayhem所说的原因,您在第一次迭代时拥有数据。