我正在为过去 30 天的运行列表中的 mysql 数据库构建一个特定客户端的调用次数数组。到目前为止,我的代码可用于添加调用数组的日期,但我需要在没有调用的日期显示“0”(数据库中没有条目)。到目前为止,这是我的代码:
$query="SELECT COUNT(*) FROM my_db WHERE client_phone='clint_phone#' GROUP BY calldate";
$result = mysql_query($query);
$data = array();
while ($row = mysql_fetch_row($result)) {
$data[] = $row[0];
}
我只需要一种方法来显示今天我有 30 个电话,而昨天我有 0 个电话,我需要它来显示 [30,0]。我所拥有的只会显示 [30]。
编辑 * 我有一个 mysql 数据库将列 client_phone、calldate。我希望使用数组中的数据构建图表。图表的每个点将代表一天以及该客户当天的呼叫次数。我正在构建上述查询来填充该数组。我试图倒数三十天,并将每天的总呼叫数输入数组。
编辑 2* 我已经差不多了。我在“foreach”区域遇到问题。下面是带有两个 print_r() 转储数组的代码。第一个看起来不错,但第二个显示一些不应该被覆盖的数组条目:
$query="SELECT calldate, COUNT(*) FROM my_db WHERE client_phone='phone#' and calldate>='20130101' AND calldate<='20130107' GROUP BY calldate ORDER BY calldate";
$result = mysql_query($query);
$data = array();
while ($row = mysql_fetch_array($result)) {
$data[$row['calldate']] = $row[1];
}
$startDate = '20130101';
$endDate = '20130107';
$dates = array();
for($current = $startDate; $current != $endDate; $current = date('Ymd', strtotime("$current +1 day"))) {
$dates[] = $current;
}
$dates[] = $endDate;
print_r ($data);
echo "<br />";
foreach($dates as $date){
if (in_array($date, $data)) {
// that date was found in your db_date array(therefore had queries)
}else{
$data[$date] = 0; //date was not found in your db_array so we set that date with no queries to zero
}
}
print_r ($data);
我在浏览器中运行它,我得到了这个:
Array ( [20130101] => 1 [20130104] => 6 [20130105] => 2 [20130106] => 1 [20130107] => 3 )
Array ( [20130101] => 0 [20130104] => 0 [20130105] => 0 [20130106] => 0 [20130107] => 0 [20130102] => 0 [20130103] => 0 )
顶部输出看起来不错,只是缺少分配给不在 data[] 数组中的日期的零。第二个数组在缺失的日期中有零,但其他不应该被覆盖的日期。
谢谢你的帮助!