Laravel控制器读取接口JSON并提取numbertotal字段前后位的求助
问题解决方法
核心错误原因
- 错误1:
$content是接口返回的原始响应字符串,不支持直接调用属性获取字段值 - 错误2:
numbertotal字段位于解析后的关联数组的customer子层级下,需要从json_decode生成的$customers变量中取值 - 错误3:代码中调用的
$string变量未定义,没有对应赋值逻辑
修正后的控制器代码
$url= 'https://example.com/api'; $client = new \GuzzleHttp\Client(); $res = $client->get($url); $content = (string) $res->getBody(); // 解析JSON为关联数组 $customers = json_decode($content, true); // 从正确层级取出numbertotal,转字符串避免数字类型处理异常 $numberTotal = strval($customers['customer']['numbertotal']); // 提取前两位 $firstNumbers = substr($numberTotal, 0, 2); // 提取最后一位 $latestNumber = substr($numberTotal, -1); // 传递到视图示例,可根据你原有传值逻辑调整,原有客户字段调用逻辑不需要修改 return view('你的视图路径', compact('customers', 'firstNumbers', 'latestNumber'));
取值验证
你可以在控制器中临时加dd($firstNumbers, $latestNumber)打印结果,针对示例值1122222223,会得到11和3的正确结果,视图中可以直接通过$firstNumbers、$latestNumber调用处理后的值。
内容的提问来源于stack exchange,提问作者KatiaSisHost
相关产品推荐
相关产品推荐

