У меня есть данные для статистики моих сайтов в 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
Обратите внимание на 1 в конце ^^. Казалось, что это результат (а не опечатка).
Теперь, когда я пытаюсь распечатать определенный массив (используя date
в качестве key
):
print_r $my_multi_array['11-12-24'];
Я получил:
1
Итак, я пытаюсь:
print_r $my_multi_array[2];
и это прекрасно работает.
По какой-то причине он не позволит мне выбрать массив из $my_multi_array
используя date
в качестве ключа.
Есть какие нибудь идеи как это починить?
благодаря
Вы должны поместить дату в качестве ключа массива, например:
$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[2]
, он работает.
С другой стороны, делая $my_multi_array[$date]
вы обрабатываете массив как хеш-таблицу, где вы связываете ключ (в данном случае строку, содержащую дату) со значением.
Все правильно, потому что у вас нет array('key' => 'value')
style array('key' => 'value')
, вместо этого у вас есть array( [0] => array( 'key' => 'value' ) )
поэтому вы получаете правильный результат при обращении к цифровому ключу массива.