在php中读取和打印json数组

时间:2016-12-22 06:49:31

标签: php json foreach

我有一个像下面这样的JSON数组。我想只打印名称的值。但我得到未定义的索引名称并获得name.below的值是我的json。

[{"docId":{"id":"57dd70252a896558e573a0c8"},"docProfile":{"name":"gowtham","gender":null,"email":null,"mobile":"7406339908"},"docLocalInfo":{"username":"gowtham","otp":934343,"newPasswordToken":null,"tempMobile":"","adminVerfiy":null},"privateInfo":{"mciNumber":null,"aadharNumber":null,"panNumber":null},"tempHospitals":[],"bankInfo":null,"signupSteps":{"accountCreated":true,"otpValidated":true},"notification":null,"hospitals":[],"address":null}]

我的代码

foreach($doc_array as $data => $mydata)
    {
          foreach($mydata as $key=>$val)
          {
              echo $val['name'];
          }
    }

如何从docProfile获取名称的值?任何帮助将不胜感激

4 个答案:

答案 0 :(得分:1)

在你的foreach中,你不需要再次循环,因为docProfile是json对象数组的索引

只需简单访问

echo $mydata['docProfile']['name'].'<br>';

所以你的foreach会是这样的

foreach($doc_array as $data => $mydata) {
    echo $mydata['docProfile']['name'].'<br>';
}

Demo

答案 1 :(得分:1)

<?php
    $json_str='[{"docId":{"id":"57dd70252a896558e573a0c8"},"docProfile":{"name":"gowtham","gender":null,"email":null,"mobile":"7406339908"},"docLocalInfo":{"username":"gowtham","otp":934343,"newPasswordToken":null,"tempMobile":"","adminVerfiy":null},"privateInfo":{"mciNumber":null,"aadharNumber":null,"panNumber":null},"tempHospitals":[],"bankInfo":null,"signupSteps":{"accountCreated":true,"otpValidated":true},"notification":null,"hospitals":[],"address":null}]';

    $json_arr = (array)json_decode($json_str,true);
    foreach($json_arr as $iarr => $ia)
    {
        foreach($ia["docProfile"] as $doc => $docDetails)
        {
            if($doc =="name")
            {
                echo $ia["docProfile"]["name"];
            }
        }
    }
?>

此代码为您提供答案

答案 2 :(得分:0)

这个数组只有一行,但是如果你的数组有更多行,你可以使用它; 你需要首先解码JSON。

$doc_array =json_decode($doc_array ,true);

foreach($doc_array as $key=> $val){
     $val['docProfile']['name']  
}

答案 3 :(得分:0)

尝试这样的事情。

<?php
$string = '[{"docId":{"id":"57dd70252a896558e573a0c8"},"docProfile":{"name":"gowtham","gender":null,"email":null,"mobile":"7406339908"},"docLocalInfo":{"username":"gowtham","otp":934343,"newPasswordToken":null,"tempMobile":"","adminVerfiy":null},"privateInfo":{"mciNumber":null,"aadharNumber":null,"panNumber":null},"tempHospitals":[],"bankInfo":null,"signupSteps":{"accountCreated":true,"otpValidated":true},"notification":null,"hospitals":[],"address":null}]';

$arr = json_decode($string, true);
echo $arr[0]['docProfile']['name'];
?>