PHP 警告:in_array() 期望参数 2 是数组,字符串在
Posted
技术标签:
【中文标题】PHP 警告:in_array() 期望参数 2 是数组,字符串在【英文标题】:PHP Warning: in_array() expects parameter 2 to be array, string given in 【发布时间】:2021-03-27 07:05:42 【问题描述】:我已经浏览了此处可以找到的有关此警告的所有其他帖子,但我似乎无法更正它。警告是php Warning: in_array() expects parameter 2 to be array, string given in...
。
代码:
$my_teachers = $student->my_teachers;
if (in_array($teacher_email, $my_teachers))
我知道 $my_teachers 需要是一个数组,但据我所知。该值是通过创建一个数组,将教师的电子邮件推送到数组中,并将其保存到 mysql 来创建的。 MySQL 数据库行显示为
a:2:i:1;s:16:"teacheremail1@gmail.com";i:2;s:18:"teacheremail2@gmail.com";
这实际上是作为字符串存储的,我没有意识到吗?无论哪种方式,我如何摆脱警告?代码仍然给了我预期的结果,但警告正在填满我的 error_log。
【问题讨论】:
似乎是serialize()
字符串。使用unserialize($string)
转换回数组。
通常框架有一个内置的方法来转换回数组/对象。您可能需要查看您的项目(wordpress 或插件),看看是否有更好的方法。
【参考方案1】:
也许您可以添加一个额外的检查,例如:
$my_teachers = gettype($student->my_teachers) === 'array' ? $student->my_teachers : unserialize($student->my_teachers);
【讨论】:
以上是关于PHP 警告:in_array() 期望参数 2 是数组,字符串在的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5:in_array() 期望参数 2 是数组,给定对象
获取 PHP 错误警告:fputcsv() 期望参数 2 为数组
PHP 警告:number_format() 期望参数 1 为浮点数
警告:mysqli_query() 期望参数 2 是字符串,对象在
MediaWiki:PHP 警告:mysqli::real_escape_string() 期望参数 1 是字符串,给定对象