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

PHP类中处理数组与数字的is_jsonable函数无法正常工作求助

修复PHP响应内容处理函数的问题

我帮你梳理下这个is_jsonable函数里的几个关键问题,以及对应的修复方案:

原函数的核心问题

  • 参数引用错误:函数定义的参数是$content,但函数内部全程用了$this->content(类的成员变量),完全没用到传入的参数,这会导致逻辑完全偏离预期。
  • JSON处理逻辑颠倒:如果内容是数组或数字,你应该用json_encode()把它们转成可返回的JSON字符串,而不是用json_decode()(这个是用来解析JSON字符串成数组/对象的)。
  • 变量语法错误:第二个条件里的$this->$content是错误的,这是可变属性的写法,你实际想判断的是传入的$content变量,直接写$content即可。
  • 类型检查逻辑混乱:原条件里的null判断和类型检查顺序有问题,会导致一些合法类型被误判。

修复后的函数代码

public function is_jsonable($content){
    // 处理数组或数字:转成JSON字符串
    if(is_array($content) || is_numeric($content)){
        return json_encode($content);
    } 
    // 处理null或字符串:直接返回(字符串如果是合法JSON也可以直接用)
    elseif (is_null($content) || is_string($content)){
        return $content;
    } 
    // 其他非法类型抛出异常
    else {
        throw new Exception('Response Content is Invalid !');
    }
}

关键修改说明

  • 把所有$this->content改成$content,确保使用的是传入的参数。
  • 将json_decode替换为json_encode,正确把数组/数字转成JSON格式的响应内容。
  • 重构了类型检查逻辑:先处理合法的可转换/直接返回的类型,最后再抛出异常,逻辑更清晰。
  • 移除了错误的$this->$content写法,修正变量引用。

这样修改后,函数就能正确处理数组、数字、字符串和null类型的内容,对非法类型(比如对象、资源等)会抛出异常,符合响应内容处理的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:20