preg_grep() 期望参数 2 是数组,给定 null
Posted
技术标签:
【中文标题】preg_grep() 期望参数 2 是数组,给定 null【英文标题】:preg_grep() expects parameter 2 to be array, null given 【发布时间】:2015-10-14 06:56:41 【问题描述】:我有一个 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
循环迭代$allYearData
之前调用$allYearData = $stmt->fetchAll();
?
【参考方案1】:
for($i = 0; $i <= $allYearData; $i++)
$janData[] = preg_grep("/^2015-01-.*$/", $allYearData[$i]);
首先,你有 $i
其次,使用 foreach 循环,这样计数项目就没有问题了。或者在使用 for 之前三思而后行。
【讨论】:
我用count
更新了我的问题。我也删除了=
。现在循环运行顺利。谢谢你。我也会看看foreach
。现在我有一个新问题。 $janData
包含与 allYearData
相同的值 .. 过滤器循环不起作用...
- 是正则表达式中的一个特殊字符,所以不要使用 /^2015-01-.*$/,而是尝试使用:/^2015\-01\-.*$/【参考方案2】:
你必须改变
for($i = 0; $i <= $allYearData; $i++)
到
for($i = 0; $i < $allYearData; $i++)
因为您的数组从索引0
开始,并以索引count($allYearData)-1
结束。
在您的代码中,您正在访问索引超出范围的数组,因此$allYearData[$i]
在for
循环的最后一次迭代中将是null
。
【讨论】:
【参考方案3】:在此代码中$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]);
【讨论】:
以上是关于preg_grep() 期望参数 2 是数组,给定 null的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5:in_array() 期望参数 2 是数组,给定对象
ErrorException strtotime() 期望参数 1 是字符串,给定数组
如何修复 htmlspecialchars() 期望参数 1 是字符串,给定数组
ErrorException array_column() 期望参数 1 是数组,给定对象