主题列表最后一页显示出错:Unsupported operand types: string + int New
版块的最后一页出错:https://www.dianbo.org/forum.php?mod=forumdisplay&fid=7&page=14
如果更换显示顺序,在某个页面也会出错:
https://www.dianbo.org/forum.php?mod=forumdisplay&fid=7&filter=reply&orderby=replies&page=7
https://www.dianbo.org/forum.php?mod=forumdisplay&fid=7&filter=author&orderby=dateline&page=9
https://www.dianbo.org/forum.php?mod=forumdisplay&fid=7&filter=reply&orderby=views&page=13
只在这一个版块出现这个情况,要如何排查问题?
www.dianbo.org - System Error
Unsupported operand types: string + int
PHP Debug
No.FileLineCode1forum.php71require()2source/module/forum/forum_forumdisplay.php862break()
1 贡献最佳答案
科站网 发表于 2025-4-18 17:15
你的错误和lastpost没关系,是views的问题,如果数据库里的views对的,那么考虑有没有插件影响 ...
我查代码 核实了;
$threadlist[$index]['views'] 是个 字符串的 0, 不是int 的 0
只有 访问的 列表的包含的 帖子正好在 forum_threadaddviews这个表 里面有 缓存数据的时候 才会触发;
这是个不易发现的小bug
我原版的X3.5; Discuz! X3.5 Release 20240520 UTF-8
天外飘仙发表于2025-4-18 17:25:02
[*]详细答案 >
你的数据有不对 你用的php8 吧? 切换到php7 应该就好了;
如果需要的话 也可以加我 QQ 有偿协助 只有一个版块出现这个问题,也可能是PHP环境的问题吗?我安装个PHP7.4试试。 Unsupported operand types: string + int;
从报错类型来看 就是 不兼容php8;
具体哪里的问题还需要 具体 debug代码 切换成PHP7.4,页面可以正常打开了。现在的问题就是怎么解决了。 解决了 就好
完整修复后的代码示例结合上述方法,以下是修复后的代码:
if (!empty($threadids)) { $indexlist = array_flip($threadids); // 初始化 $_G['forum_threadlist'] 中的 views 字段 foreach ($_G['forum_threadlist'] as &$thread) { $thread['views'] = isset($thread['views']) ? (int)$thread['views'] : 0; } unset($thread); // 处理附加浏览量 foreach (C::t('forum_threadaddviews')->fetch_all($threadids) as $tidkey => $value) { $index = $indexlist[$tidkey]; // 确保类型安全 $threadlist[$index]['views'] = (int)$threadlist[$index]['views'] + (int)$value['addviews']; $_G['forum_threadlist'][$index]['views'] = (int)$_G['forum_threadlist'][$index]['views'] + (int)$value['addviews']; }}PHP8.2下,如上修改后,版面最后一页显示变为正常。 请看楼上,也不知道这种情况需不需要提交 Issue。 治标不治本,本来这个字段就应该是int,为什么你是string
页:
[1]