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 黑客 - 核心 - 警告in_array()

PHP 警告:number_format() 期望参数 1 为浮点数

警告:mysqli_query() 期望参数 2 是字符串,对象在

MediaWiki:PHP 警告:mysqli::real_escape_string() 期望参数 1 是字符串,给定对象