我在SQL DB中有一些我的网站统计数据:
date: visits: pageviews:
12-12-12 34 21
12-12-13 31 22
12-12-14 33 2445
12-12-15 35 2422
12-12-16 36 232
//ect ect
我正在尝试创建一个多维数组,其中包含来自数据库的所有日期信息以及日期将成为关键字(选择器,多数组内部数组的名称),因此最终结果,我应该能够做到这一点:
print_r $my_multi_array[12-05-12];
我应该在屏幕上看到该日期的统计数据。
现在我知道如何做所有循环和东西,我甚至对如何做多维数组有一个好主意,只是我认为我做错了什么:
//first things first, define the array:
$my_multi_array=array();
//then, in a loop, append to the array:
$my_multi_array[]=array("$date"=>array('visits'=>mysql_num_rows($visit_query),'pageviews'=>$pageview_query));
现在当我print_r
那个数组时,一切看起来都不错:
Array ( [0] => Array ( [11-12-24] => Array ( [visits] => 1 [pageviews] => 0) ) [1] => Array ( [11-12-25] => Array ( [visits] => 1 [pageviews] => 0) ) [2] => Array ( [11-12-26] => Array ( [visits] => 1 [pageviews] => 0)))1
注意结尾的^ ^^。这似乎是结果(不是拼写错误)。
现在,当我尝试打印某个数组时(使用date
作为key
):
print_r $my_multi_array['11-12-24'];
我明白了:
1
然后我尝试:
print_r $my_multi_array[2];
并且工作正常。
出于某种原因,它不会让我使用$my_multi_array
作为键从date
中选择一个数组。
有关如何解决此问题的任何想法?
感谢
答案 0 :(得分:2)
一切都是正确的,因为你没有array('key' => 'value')
样式数组,而不是你已经array( [0] => array( 'key' => 'value' ) )
这就是为什么你得到了正确的答案访问数组的数字键。
答案 1 :(得分:1)
您必须将日期作为数组键,如下所示:
$my_multi_array[$date]=array("$date"=>array('visits'=>mysql_num_rows($visit_query),'pageviews'=>$pageview_query));
注意$my_multi_array[$date]
。
通过执行$my_multi_array[] = ...
,您只需在数组上创建一个新的数字索引,其内容位于右侧。这就是为什么当您使用数字索引访问数组时,如$my_multi_array[2]
,它可以工作。
另一方面,通过执行$my_multi_array[$date]
,您将数组视为哈希表,其中您将一个键(在本例中为包含日期的字符串)与值相关联。