如何创建一个多维数组PHP

时间:2011-12-26 18:09:07

标签: php arrays multidimensional-array

我在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中选择一个数组。

有关如何解决此问题的任何想法?

感谢

2 个答案:

答案 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],您将数组视为哈希表,其中您将一个键(在本例中为包含日期的字符串)与值相关联。