为了账号安全,请及时绑定邮箱和手机立即绑定

获取json响应php的元素名称和值

获取json响应php的元素名称和值

PHP
喵喵时光机 2022-01-14 18:03:19
我想从 json 响应中获取所有元素及其值。我有以下回复(片段,它有更多元素):stdClass Object ( [Count] => 15244 [Warnings] => Array ( ) [Machines] => Array ( [0] => stdClass Object ( [Id] => 23 [Modified] => 2019-09-18 06:38:04 [Created] => 2016-03-10 14:11:39 ) [1] => stdClass Object ( [Id] => 51 [Modified] => 2019-09-18 08:15:52 [Created] => 2016-06-15 09:13:16 )))现在我想得到类似的结果:ID: 23, Modified: 2019-09-18 06:38:04, Created: 2016-03-10 14:11:39ID: 51, Modified: 2019-09-18 08:15:52, Created: 2016-06-15 09:13:16问题是,我不想硬编码元素名称,如“ID”、“Created”等,因为每台机器的完整数组大约有 50 个元素。这是我尝试过的:$obj = json_decode($body);foreach ($obj->Machines as $comp) {    $sup =key($comp);    echo key($comp)."-".$comp->$sup."<br>";}但这只会给出输出:Id-23Id-51所以我只得到第一个 KEY 显示。我不知道如何在循环中找到下一个元素,如“修改”。感谢您的支持!
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您可以使用数组映射来回显相同的内容,


foreach ($obj->Machines as $comp) {

    echo implode(', ', array_map(function ($val, $key) {

              return sprintf("%s:'%s'", $key, $val);

        }, $comp, array_keys($comp)))."<br/>";

}

解决方案2: -


foreach ($obj->Machines as $comp) {

    echo str_replace('=',':',http_build_query($comp,'',', '));

}

http_build_query — 生成 URL 编码的查询字符串


查看完整回答
反对 回复 2022-01-14
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

使用 . 将您的 JSON 数据转换为数组json_decode()。使用array_map()对数组进行迭代,再次使用array_walk()进行另一个嵌套迭代以将值替换为key:value梨格式。最后通过逗号的胶水将转换后的数组连接到字符串。


代码示例:


$response = json_decode($response, true);

$result = array_map(function ($val) {

    array_walk($val, function (&$v, $k) { $v = "$v: $k"; });

    return implode(',', $val);

}, $response);

print_r($result);


查看完整回答
反对 回复 2022-01-14
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您所做的是正确的,尽管这是一个多维数组。


您需要几个 foreach 循环来迭代到您想要的维度。


$response = [];


foreach($obj->Machines as $comp) {

    foreach($comp as $key => $value) {

        $response[$key] = '';

        foreach($value as $title => $display) {

            $response[$key] .= $title . ': ' . $display . ', ';

        }

        $response[$key] = rtrim($response[$key], ', ');

    }

}   


var_dump($response);


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号