You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP根据数组内容选取语言变量未触发英文兜底逻辑如何排查

代码错误定位与修复

错误原因

你使用了错误的函数来校验数组元素是否存在:

  • strpos() 仅用于查找字符串内的子串位置,不支持数组作为查询对象。你将数组$trns传入strpos()第一个参数时,PHP会因参数类型不符合抛出Warning,同时返回null。
  • 你的判断条件是strpos($trns, $lng) === FALSE,而null和FALSE做严格比较时结果为假,因此无论$lng的值是什么,判断条件永远不成立,永远会走else分支将$trn赋值为$lng。之前en、de场景下看起来正常,只是刚好这两个值是数组中存在的有效值而已。

修复方案

使用专门判断数组元素是否存在的in_array()函数替换strpos()即可,示例代码如下:

// 第三个参数为true开启严格类型校验,避免隐式类型转换带来的逻辑隐患
$trn = in_array($lng, $trns, true) ? $lng : 'en';
include_once $trn . '.php';

如果需要保留原有的if分支写法,也可以调整为:

if (in_array($lng, $trns, true) === false) {
    $trn = 'en';
} else {
    $trn = $lng;
}
include_once $trn.'.php';

内容的提问来源于stack exchange,提问作者YKKY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:57:02