12下一页
返回列表 发帖
查看: 263|回复: 17

[已解决] 主题列表最后一页显示出错:Unsupported operand types: string + int

35

主题

531

回帖

769

积分

自成一派

贡献
28 点
金币
44 个
QQ
发表于 2025-4-17 20:49:49 | 查看全部 |阅读模式
版块的最后一页出错:
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.FileLineCode
1forum.php71require()
2source/module/forum/forum_forumdisplay.php862break()

截图202504172042434973.jpg



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
回复

使用道具 举报

40

主题

2951

回帖

5014

积分

应用开发者

Discuz! 运维

贡献
186 点
金币
667 个
QQ
发表于 2025-4-18 09:49:43 | 查看全部
你的数据有不对
回复

使用道具 举报

13

主题

3146

回帖

5349

积分

应用开发者

贡献
372 点
金币
164 个
QQ
发表于 2025-4-18 09:58:12 | 查看全部
你用的php8 吧? 切换到php7 应该就好了;

如果需要的话 也可以加我 QQ 有偿协助
回复

使用道具 举报

35

主题

531

回帖

769

积分

自成一派

贡献
28 点
金币
44 个
QQ
 楼主| 发表于 2025-4-18 10:13:44 | 查看全部
天外飘仙 发表于 2025-4-18 09:58
你用的php8 吧? 切换到php7 应该就好了;

如果需要的话 也可以加我 QQ 有偿协助 ...

只有一个版块出现这个问题,也可能是PHP环境的问题吗?我安装个PHP7.4试试。
回复

使用道具 举报

13

主题

3146

回帖

5349

积分

应用开发者

贡献
372 点
金币
164 个
QQ
发表于 2025-4-18 10:26:18 | 查看全部
IsaacZ 发表于 2025-4-18 10:13
只有一个版块出现这个问题,也可能是PHP环境的问题吗?我安装个PHP7.4试试。 ...

Unsupported operand types: string + int;

从报错类型来看 就是 不兼容php8;

具体哪里的问题  还需要 具体 debug代码
回复

使用道具 举报

35

主题

531

回帖

769

积分

自成一派

贡献
28 点
金币
44 个
QQ
 楼主| 发表于 2025-4-18 10:35:58 | 查看全部
天外飘仙 发表于 2025-4-18 09:58
你用的php8 吧? 切换到php7 应该就好了;

如果需要的话 也可以加我 QQ 有偿协助 ...

切换成PHP7.4,页面可以正常打开了。现在的问题就是怎么解决了。
回复

使用道具 举报

13

主题

3146

回帖

5349

积分

应用开发者

贡献
372 点
金币
164 个
QQ
发表于 2025-4-18 10:48:17 | 查看全部
IsaacZ 发表于 2025-4-18 10:35
切换成PHP7.4,页面可以正常打开了。现在的问题就是怎么解决了。

解决了 就好
回复

使用道具 举报

35

主题

531

回帖

769

积分

自成一派

贡献
28 点
金币
44 个
QQ
 楼主| 发表于 2025-4-18 11:08:53 | 查看全部
截图202504181105371280.jpg

截图202504181106125498.jpg
完整修复后的代码示例
结合上述方法,以下是修复后的代码:
  1. if (!empty($threadids)) {
  2.     $indexlist = array_flip($threadids);

  3.     // 初始化 $_G['forum_threadlist'] 中的 views 字段
  4.     foreach ($_G['forum_threadlist'] as &$thread) {
  5.         $thread['views'] = isset($thread['views']) ? (int)$thread['views'] : 0;
  6.     }
  7.     unset($thread);

  8.     // 处理附加浏览量
  9.     foreach (C::t('forum_threadaddviews')->fetch_all($threadids) as $tidkey => $value) {
  10.         $index = $indexlist[$tidkey];

  11.         // 确保类型安全
  12.         $threadlist[$index]['views'] = (int)$threadlist[$index]['views'] + (int)$value['addviews'];
  13.         $_G['forum_threadlist'][$index]['views'] = (int)$_G['forum_threadlist'][$index]['views'] + (int)$value['addviews'];
  14.     }
  15. }
复制代码
PHP8.2下,如上修改后,版面最后一页显示变为正常。

回复

使用道具 举报

35

主题

531

回帖

769

积分

自成一派

贡献
28 点
金币
44 个
QQ
 楼主| 发表于 2025-4-18 11:28:06 | 查看全部

请看楼上,也不知道这种情况需不需要提交 Issue。
回复

使用道具 举报

40

主题

2951

回帖

5014

积分

应用开发者

Discuz! 运维

贡献
186 点
金币
667 个
QQ
发表于 2025-4-18 11:40:55 | 查看全部
治标不治本,本来这个字段就应该是int,为什么你是string
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2025-4-30 14:50 , Processed in 0.058358 second(s), 13 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表