使用方括号PHP在json上获取字符串

时间:2018-03-15 01:37:58

标签: php arrays json

我很难用[]括号获取json字符串的值。

下面的

是示例字符串

[{"ID":"5857062","FirstName":"MyFirstNamne","MiddleName":"MyMiddleName","LastName":"MyLastName"}]

我想获得以下

的值
  

ID,FirstName,MiddleName,LastName

我做的是将str转换为json_encode()但是添加了反斜杠的字符串,所以我删除了它。我做的下一件事是我首先删除反斜杠并将其转换为json但仍然没有运气。

2 个答案:

答案 0 :(得分:2)

如果您想阅读json文件,可以使用file_get_contents()

然后,您需要json_decode()来解析字符串。

当然,如果您只想从字符串中获取值,则可以将其分配给变量。

    //$str = file_get_contents('./test.json');
      $str ='[{"ID":"5857062","FirstName":"MyFirstNamne","MiddleName":"MyMiddleName","LastName":"MyLastName"}]
';
    echo "<pre>";
    var_dump(json_decode($str,true));
    echo "</pre>";

注意:如果您使用true设置json_decode()选项,您将获得一个关联数组。

结果:

array(1) {
  [0]=>
  array(4) {
    ["ID"]=>
    string(7) "5857062"
    ["FirstName"]=>
    string(12) "MyFirstNamne"
    ["MiddleName"]=>
    string(12) "MyMiddleName"
    ["LastName"]=>
    string(10) "MyLastName"
  }
}

然后你当然可以通过键访问值。

<强> APPEND

如果您收到Control character error, possibly incorrectly encoded的错误。

你可以删除控制角色,

PCRE支持字符类[:cntrl:]

的POSIX表示法

代码:

    //$str = file_get_contents('./test.json');
        $str ='[{"ID":"5857062","FirstName":"MyFirstNamne","MiddleName":"MyMiddleName","LastName":"MyLastName"}]
    ';
        $str = preg_replace('/[[:cntrl:]]/', '', $str);       
        echo "<pre>";
        var_dump(json_decode($str,true));
        echo "</pre>";

参考:json_encode returns NULL, json_last_error_msg gives “Control character error, possibly incorrectly encoded”

答案 1 :(得分:0)

$data  = '[{"ID":"5857062","FirstName":"MyFirstNamne","MiddleName":"MyMiddleName","LastName":"MyLastName"}]';

$result = json_decode($data, TRUE);
echo "<pre>";
print_r($result);

echo $result[0]['ID'].'<br/>';
echo $result[0]['FirstName'].'<br/>';
echo $result[0]['MiddleName'].'<br/>';
echo $result[0]['LastName'].'<br/>';