使用变量作为数组索引
问题描述:
我有由几个月分组要素的多维数组,例如:使用变量作为数组索引
Array
(
[2013-01] => Array
(
[0] => Array
(
[Project] => Array
(
[id] => 1
[user_id] => 1
[created] => 2013-04-08 01:00:56
[modified] => 2013-04-08 01:01:40
[vId] => 7
)
)
)
[2013-04] => Array
(
[2] => Array
(
[Project] => Array
(
[id] => 1
[user_id] => 1
[created] => 2013-04-08 01:00:56
[modified] => 2013-04-08 01:01:40
[refimg] => uploads/smallRef.png
)
)
[3] => Array
(
[Project] => Array
(
[id] => 1
[user_id] => 1
[created] => 2013-04-08 01:00:56
[modified] => 2013-04-08 01:01:40
)
)
[4] => Array
(
[Project] => Array
(
[id] => 1
[user_id] => 1
[created] => 2013-04-08 01:00:56
[modified] => 2013-04-08 01:01:40
)
)
)
)
现在我要遍历个月,每个月我要上进行计数阵列为特定月份:
$currMonth = date('Y-m-d');
while (strtotime($currMonth) >= strtotime($firstMonth)) {
$curM = date('Y-m', strtotime($currMonth));
count($grouparr[$curM]);
$currMonth = date ("Y-m-d", strtotime("-1 month", strtotime($currMonth)));
}
这似乎并不奏效。我收到以下错误:
Uncaught SyntaxError: Unexpected token <
如果我手动输入一切正常,例如日期,如果我取代这个在上面的代码:
count($grouparr["2013-01");
我希望有人能告诉我,我是什么做错了
答
foreach($yourarray as $month) {
echo sizeof($month);
}
答
foreach ($grouparr as $month => $values) {
echo "$month: " . count($values) . "<br />";
}
+0
为什么投票表决? – michi 2013-04-11 17:06:59
答
恕我直言,不使用的strtotime()函数,如果你能帮助它。我不确切地知道你的最终结果可能是什么,但是当我像这样迭代数组时,让我提供一些选择。
首先,如果你只是想通过数组循环...
foreach ($grouparr as $key => $val) {
list($year, $month) = explode("-", $key, 2);
printf("%s, %s has %s records",
$month,
$year,
is_array($val) ? count($val) : 0
);
}
或者,也许你想通过过去12个月...
for ($i = 1; $i <= 12; $i++) {
//Use this timestamp for all your date calculations
$mytime = mktime(0, 0, 0, date("n") - $i, 1, date("Y"));
if (array_key_exists(date("Y-m", $mytime), $grouparr)) {
printf("%s, %s has %s records",
date("F", $mytime),
date("Y", $mytime),
is_array($grouparr[date("Y-m", $mytime)]) ? count(date("Y-m", $mytime)) : 0
);
}
}
这些代码示例可以要简单得多,但...
这段代码没有语法错误吗? – bwoebi 2013-04-11 16:52:17
代码 – 2013-04-11 16:53:20
中甚至没有' 2013-04-11 16:53:47