как создать многомерный массив PHP - PullRequest
2 голосов
/ 26 декабря 2011

У меня есть некоторые данные для статистики моих сайтов в БД SQL:

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

Обратите внимание на 1 в конце ^^.Казалось, что в результате (не опечатка).

Теперь, когда я пытаюсь распечатать определенный массив (используя date в качестве key):

print_r $my_multi_array['11-12-24'];

Я получаю:

1

Итак, я пытаюсь:

print_r $my_multi_array[2];

, и это прекрасно работает.

По некоторым причинам, это не позволит мне выбрать массив из $my_multi_array используя date в качестве ключа.

Есть идеи, как это исправить?

спасибо

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Все правильно, потому что у вас нет массива стиля array('key' => 'value'), вместо этого у вас есть array( [0] => array( 'key' => 'value' ) ), поэтому вы получаете правильный результат при доступе к числовому ключу массива.

1 голос
/ 26 декабря 2011

Вы должны поставить дату в качестве ключа массива, например:

$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], вы обрабатываете массив как хеш-таблицу, с которой связываетеключ (в данном случае строка, содержащая дату) со значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...