Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中提取JSON对象中的对象并为其分配正确的索引_Php_Json - Fatal编程技术网

如何在PHP中提取JSON对象中的对象并为其分配正确的索引

如何在PHP中提取JSON对象中的对象并为其分配正确的索引,php,json,Php,Json,我有以下PHP代码(我将发布其中的重要部分): 因此,我需要解决的基本问题如下: 正确获取项目列表的正确代码是什么 我的Users.json文件中每个对象内部的“指针”对象 我试图跟踪我的foreach循环的索引,但它不能正常工作,正如您在上面发布的echo中所看到的,当我第一次执行PHP代码时,我得到了我的第一个对象的JSON字符串,我没有得到任何print\r()。然后,当我第二次刷新页面时,我会得到第一个对象的objID字符串的打印,同样,如果我第三次刷新页面,我会得到第二个对象的objI

我有以下PHP代码(我将发布其中的重要部分):

因此,我需要解决的基本问题如下:

  • 正确获取项目列表的正确代码是什么 我的
    Users.json
    文件中每个对象内部的“指针”对象
  • 我试图跟踪我的
    foreach
    循环的索引,但它不能正常工作,正如您在上面发布的
    echo
    中所看到的,当我第一次执行PHP代码时,我得到了我的第一个对象的JSON字符串,我没有得到任何print\r()。然后,当我第二次刷新页面时,我会得到第一个对象的
    objID
    字符串的打印,同样,如果我第三次刷新页面,我会得到第二个对象的
    objID
    ,而json文件中存储了3个对象。等等,换句话说,我从来没有得到第一个对象的打印信息

  • 我做错了什么?

    您正在以字符串而不是变量的形式传递
    $I
    。使用双引号(
    )或删除单引号(
    )作为变量传递。这将解决指针对象无法正确打印的问题

    $obj['pointer'][$i]['objID']

    更新

    [{"objID":"VUDjCZX8QX","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"mark","createdOn":"2018-09-17 05:36:49","updatedOn":"2018-09-17 05:36:49","number":111,"boolean":true,"array":["john","sarah"]},{"objID":"1uWH17OoJP","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"mark","createdOn":"2018-09-17 05:36:51","updatedOn":"2018-09-17 05:36:51","number":111,"boolean":true,"array":["john","sarah"]},{"objID":"RkubyQPvqR","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"mark","createdOn":"2018-09-17 05:36:54","updatedOn":"2018-09-17 05:36:54","number":111,"boolean":true,"array":["john","sarah"]}]
    
    根据上面的JSON字符串,您不需要指定
    $i


    $obj['pointer']['objID']
    应该可以工作,因为它是关联数组。

    多亏了@saumini-navaratnam,我必须使用以下
    foreach

    foreach($jsonObjs as $i=>$obj) {
       print_r('<br><br>'.$i.'-- ');
       echo 
           $obj['objID'].', '
           .$obj['pointer']['objID']. ', '
           .$obj['pointer']['type']. ', '
           .$obj['pointer']['className']. '<br><br>'
       ;               
    } 
    
    事实上,这是我得到的回音:

     [
    {"objID":"pkO8NesS5S","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:03:27","updatedOn":"2018-09-17 07:03:27","number":111,"boolean":true,"array":["john","sarah"]},
    {"objID":"rdwJl20krC","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:03:31","updatedOn":"2018-09-17 07:03:31","number":111,"boolean":true,"array":["john","sarah"]},
    {"objID":"3WspzmuwMK","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:07:39","updatedOn":"2018-09-17 07:07:39","number":111,"boolean":true,"array":["john","sarah"]}
    ]
    
    0-- pkO8NesS5S, dgFg45dG, __pointer, Users
    
    
    1-- rdwJl20krC, dgFg45dG, __pointer, Users
    
    
    2-- 3WspzmuwMK, dgFg45dG, __pointer, Users
    

    不,抱歉,它打印相同的结果,我甚至用$obj['pointer'][$I]['objID']尝试过,没有积极的结果:(@xscoder我已经更新了答案。请不要使用
    $I
    尝试。非常感谢,你是对的,现在它工作了,我还编辑了我的答案,以便通过将代码移到echo$jsonData之后来修复索引打印
    foreach($jsonObjs as $i=>$obj) {
       print_r('<br><br>'.$i.'-- ');
       echo 
           $obj['objID'].', '
           .$obj['pointer']['objID']. ', '
           .$obj['pointer']['type']. ', '
           .$obj['pointer']['className']. '<br><br>'
       ;               
    } 
    
    {"pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"}
    
     [
    {"objID":"pkO8NesS5S","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:03:27","updatedOn":"2018-09-17 07:03:27","number":111,"boolean":true,"array":["john","sarah"]},
    {"objID":"rdwJl20krC","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:03:31","updatedOn":"2018-09-17 07:03:31","number":111,"boolean":true,"array":["john","sarah"]},
    {"objID":"3WspzmuwMK","pointer":{"type":"__pointer","objID":"dgFg45dG","className":"Users"},"string":"bobby","createdOn":"2018-09-17 07:07:39","updatedOn":"2018-09-17 07:07:39","number":111,"boolean":true,"array":["john","sarah"]}
    ]
    
    0-- pkO8NesS5S, dgFg45dG, __pointer, Users
    
    
    1-- rdwJl20krC, dgFg45dG, __pointer, Users
    
    
    2-- 3WspzmuwMK, dgFg45dG, __pointer, Users