preg_grep() 期望参数 2 为数组,给定为 null
preg_grep() expects parameter 2 to be array, null given
我有一个 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....
我做错了什么?
for($i = 0; $i <= $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}
首先,你有 $i <= $allYearData,所以 allYearData 是数字,还是数组?对于循环,那里应该有一个整数。请改用 count($allYearData) 。而不是 <= 但 <.
其次,使用foreach循环,这样你计数项目就没有问题了。还是三思再用for.
你必须改变
for($i = 0; $i <= $allYearData; $i++){
到
for($i = 0; $i < $allYearData; $i++){
因为您的数组从索引 0
开始,将以索引 count($allYearData)-1
结束。
在您的代码中,您正在访问索引越界的数组,因此 $allYearData[$i]
在 for
循环的最后一次迭代中将是 null
。
在此代码中 $allYearData[$i]
必须是数组。如果您要查找需要 2 个参数的错误 preg_grep() expects parameter 2 to be array, null given
并且您已给出但最后一个参数不是数组并且它是必需的,因此它假定 null
最后一个参数。您必须检查循环并确保第二个参数是 Array
数据类型
for($i = 0; $i < $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}
我有一个 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....
我做错了什么?
for($i = 0; $i <= $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}
首先,你有 $i <= $allYearData,所以 allYearData 是数字,还是数组?对于循环,那里应该有一个整数。请改用 count($allYearData) 。而不是 <= 但 <.
其次,使用foreach循环,这样你计数项目就没有问题了。还是三思再用for.
你必须改变
for($i = 0; $i <= $allYearData; $i++){
到
for($i = 0; $i < $allYearData; $i++){
因为您的数组从索引 0
开始,将以索引 count($allYearData)-1
结束。
在您的代码中,您正在访问索引越界的数组,因此 $allYearData[$i]
在 for
循环的最后一次迭代中将是 null
。
在此代码中 $allYearData[$i]
必须是数组。如果您要查找需要 2 个参数的错误 preg_grep() expects parameter 2 to be array, null given
并且您已给出但最后一个参数不是数组并且它是必需的,因此它假定 null
最后一个参数。您必须检查循环并确保第二个参数是 Array
数据类型
for($i = 0; $i < $allYearData; $i++){
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
}