我有一个mySQL查询来获取整年的数据:$allYearData = $stmt->fetchAll();
现在我想把这个数组分成12个部分,按月分开。
更新
所以我计算$allYearData
中的行:
//Count all keys
$allYearDataCount = Count($allYearData);
现在我使用PHP preg_grep()
搜索并将结果放入新数组$janData
。
for($i = 0; $i <= $allYearDataCount; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}
结果:
preg_grep() expects parameter 2 to be array, null given
如果我检查$allYearData
数据我可以看到它已满。
$allYearData = $stmt->fetchAll();
print_r($allYearData);
Array ( [0] => Array ( [id] => 7811 [objekt_element] => 23050-121-1_3105 [objekt_nr] => 23050-121-1 [element_nr] => 3105 [vart] => B.Avf [vem] => Blå [anteckn] => [datum] => 2015-09-29 18:00:19 ) [1] => Array ( [id] => 7812 [objekt_element] => 23050-121-1_3107 [objekt_nr] => 23050-121-1 [element_nr] => 3107 [vart] => B.Avf [vem] => Blå [anteckn] => [datum] => 2015-09-29 18:00:22 ) [2....
我做错了什么?
答案 0 :(得分:1)
for($i = 0; $i <= $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}
首先,你有$ i&lt; = $ allYearData,所以allYearData是数字还是数组?有了循环,那里应该有一个整数。请改用count($ allYearData)。而不是&lt; =但是&lt;。
其次,使用foreach循环,因此您对计算项目没有任何问题。或者在使用之前请三思。
答案 1 :(得分:1)
你必须改变
for($i = 0; $i <= $allYearData; $i++){
到
for($i = 0; $i < $allYearData; $i++){
因为您的数组从索引0
开始,并以索引count($allYearData)-1
结束。
在您的代码中,您正在访问带有索引超出范围的数组,以便在$allYearData[$i]
循环的最后一次迭代中null
为for
。
答案 2 :(得分:1)
在此代码$allYearData[$i]
中必须是数组。如果您要查找错误preg_grep() expects parameter 2 to be array, null given
,那么需要2个参数并且您已经给出但是最后一个参数不是数组且它是必需的,因此它假设null
最后一个参数。您必须检查循环并确保第二个参数为Array
数据类型
for($i = 0; $i < $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}