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

为何传入数组调用mb_convert_encoding报错?PHP文档显示支持数组

关于mb_convert_encoding处理数组报错的问题解答

你遇到的这个矛盾情况并不是文档有误,核心原因大概率是PHP版本兼容问题。

mb_convert_encoding支持数组作为第一个参数并递归转换内部字符串的特性,是从PHP 5.4.0版本才正式引入的。如果你的PHP版本低于5.4.0,这个函数只能接受字符串类型的第一个参数,自然会抛出mb_convert_encoding() expects parameter 1 to be string, array given的警告。

给你两个解决思路:

  • 直接升级PHP版本到5.4.0及以上:这样就能直接使用原生函数处理数组,不需要额外代码。
  • 无法升级的话,自己实现一个递归转换函数:
function mb_convert_encoding_recursive($data, $to_encoding, $from_encoding) {
    if (is_array($data)) {
        foreach ($data as $key => $value) {
            $data[$key] = mb_convert_encoding_recursive($value, $to_encoding, $from_encoding);
        }
        return $data;
    } elseif (is_string($data)) {
        return mb_convert_encoding($data, $to_encoding, $from_encoding);
    }
    // 非数组非字符串类型直接返回
    return $data;
}

// 使用示例
$data = ['abcd', 'ddd'];
$data = mb_convert_encoding_recursive($data, 'utf-8', 'windows-1251');

你可以通过执行echo PHP_VERSION;或者查看phpinfo()的输出来确认当前PHP版本,验证是不是版本过低导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:44:04