PHP工单系统出现array_search()参数错误,未改代码突发问题求助
解决array_search()参数类型错误的思路
核心问题
报错array_search() expects parameter 2 to be array, integer given的本质是:$_SESSION['viewissue_list']的实际类型为整数,但代码逻辑期望它是数组,导致array_search调用失败。
立即修复方案
在第73行代码前添加数组校验与初始化逻辑,强制确保变量为数组类型:
// 确保viewissue_list始终是数组,避免非数组类型引发报错 if (!isset($_SESSION['viewissue_list']) || !is_array($_SESSION['viewissue_list'])) { $_SESSION['viewissue_list'] = []; }
这段代码会在每次执行目标逻辑前,检查并重置变量为数组,直接解决当前报错问题。
根源排查方向
- 排查其他赋值逻辑:搜索项目中所有修改
$_SESSION['viewissue_list']的代码,确认是否存在误将其赋值为整数的情况(比如直接写$_SESSION['viewissue_list'] = $issue->getID();而非使用array_push)。 - 会话存储异常:检查服务器会话存储介质(如文件、Redis)是否存在数据损坏,或者会话写入/读取时出现异常,导致数组被篡改为整数。
- 并发操作冲突:如果存在同一用户同时多页面操作工单的场景,可能出现会话变量被并发覆盖的情况,导致数组被意外替换为整数。
长期防护建议
在所有使用$_SESSION['viewissue_list']的位置,都提前加上数组校验逻辑,避免类似类型错误再次发生。
内容的提问来源于stack exchange,提问作者Teo
相关产品推荐
相关产品推荐

