如何在 PHP 中正确遍历 JSON 解码后的对象属性数组
发布时间 - 2026-01-05 00:00:00 点击率:次当使用 `json_decode()` 将 json 字符串转为 php 对象后,需明确目标数据位于对象的哪个属性下;本例中待遍历的是 `$topic_obj->text` 这一数组属性,而非整个对象本身。
在 PHP 中,json_decode($json, $assoc = false) 默认返回一个 stdClass 对象,其结构严格对应原始 JSON。这意味着:
- 顶层 JSON 对象 → PHP 的 stdClass 实例(如 $Topic_OBJ);
- JSON 数组(如 "Text": [...])→ PHP 索引数组,作为该对象的一个属性存在,必须通过 ->Text 显式访问;
- 直接 foreach ($Topic_OBJ as ...) 会遍历对象的公共属性(即 "TextContainer_id" 和 "Text" 两个属性),而 $obj->Text->Text_id 会失败,因为 $obj 实际是字符串键(如 "TextContainer_id")或数组("Text"),并非嵌套对象。
✅ 正确做法是:定位到目标数组属性,再对其迭代:
$Topic_OBJ = json_decode($this->api_local_get($url));
$Text_IDS = "";
// ✅ 正确:遍历 $Topic_OBJ 对象的 Text 属性(它是一个数组)
foreach ($Topic_OBJ->Text as $text) {
$Text_IDS .= $text->Text_id . ',';
}
// 输出示例:'794887707,794887711,'⚠️ 注意事项:
- 在访问前建议校验属性是否存在且为数组,避免运行时错误:
if (isset($Topic_OBJ->Text) && is_array($Topic_OBJ->Text)) { foreach ($Topic_OBJ->Text as $text) { if (isset($text->Text_
id)) {
$Text_IDS .= $text->Text_id . ',';
}
}
} - 若需去除末尾多余逗号,可用 rtrim($Text_IDS, ',');
- 如需更现代、安全的写法,可结合 array_column() 和 implode():
$textIds = array_column((array)$Topic_OBJ->Text, 'Text_id'); $Text_IDS = implode(',', $textIds) . ',';
总结:foreach 作用于对象本身 ≠ 遍历其内部数组属性;务必通过 ->属性名 明确路径访问嵌套结构。这是 JSON 解析后对象遍历中最常见的误区之一。
立即学习“PHP免费学习笔记(深入)”;
# php
# js
# json
# ai
# foreach
# 字符串
# 对象
# 遍历
# 的是
# 这是
# 这一
# 它是
# 而非
# 如需
# 最常见
# 是否存在
# 为该
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何确认建站备案号应放置的具体位置?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
如何快速生成凡客建站的专业级图册?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Laravel如何实现多对多模型关联?(Eloquent教程)
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
iOS验证手机号的正则表达式
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何在香港服务器上快速搭建免备案网站?
如何在橙子建站上传落地页?操作指南详解
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
七夕网站制作视频,七夕大促活动怎么报名?
Laravel如何使用Sanctum进行API认证?(SPA实战)
个人摄影网站制作流程,摄影爱好者都去什么网站?
IOS倒计时设置UIButton标题title的抖动问题
javascript如何操作浏览器历史记录_怎样实现无刷新导航
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
javascript基本数据类型及类型检测常用方法小结
浅述节点的创建及常见功能的实现
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
进行网站优化必须要坚持的四大原则
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
浅析上传头像示例及其注意事项
使用spring连接及操作mongodb3.0实例
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
JavaScript常见的五种数组去重的方式
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel如何升级到最新版本?(升级指南和步骤)
如何快速辨别茅台真假?关键步骤解析
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
详解vue.js组件化开发实践
🚀拖拽式CMS建站能否实现高效与个性化并存?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel如何创建自定义Facades?(详细步骤)
详解Oracle修改字段类型方法总结
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel如何处理异常和错误?(Handler示例)
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
如何快速查询域名建站关键信息?
Android仿QQ列表左滑删除操作


id)) {
$Text_IDS .= $text->Text_id . ',';
}
}
}