从嵌套数组取值问题——PHP WordPress场景
WordPress get_post_meta 获取用户数据并转为变量
问题分析
直接echo $job_owner报错是因为它包含stdClass对象,无法直接转换为字符串;转成数组后访问失败,是因为访问路径错误,且数组不能用对象的->语法调用属性。
正确处理方式
方式1:直接操作原数据(无需转数组)
原$job_owner是数组结构,用户数据嵌套在data子数组的第0位且为stdClass对象,按层级访问即可:
// 先校验数据存在,避免报错 if (!empty($job_owner['data']) && isset($job_owner['data'][0])) { $user = $job_owner['data'][0]; // 转为单独变量 $user_id = $user->id; $first_name = $user->firstName; $last_name = $user->lastName; $user_email = $user->email; }
方式2:转数组后操作
如果已经转成关联数组,使用数组索引语法访问,注意层级结构:
$array = json_decode(json_encode($job_owner), true); // 校验数据合法性 if (!empty($array['data']) && isset($array['data'][0])) { $user = $array['data'][0]; // 转为单独变量 $user_id = $user['id']; $first_name = $user['firstName']; $last_name = $user['lastName']; $user_email = $user['email']; }
错误原因说明
你之前用echo $array[0]->id失败,核心问题有两个:
$array的顶级键是total和data,没有索引为0的元素,用户实际数据在$array['data'][0]中- 转成数组后,用户数据是关联数组,必须用
['键名']访问,不能使用对象的->键名语法
内容的提问来源于stack exchange,提问作者travis_arnold
相关产品推荐
相关产品推荐

