从assoc数组中获取值,返回oe?

时间:2018-03-26 14:39:58

标签: php arrays associative-array

我有一个数组(由api提供),其中我试图从一个机构获取ID。 我将结果放在myexample.com/blog/cars/{car_id} => myexample.com/cars/{post_id} 中,并将结果放在$decodeArray = json_decode($result);中 返回:

var_dump();

我尝试回应每个机构的所有项目,例如'id'和'name'。 我试图达到这些价值观,但似乎无法做到正确。

object(stdClass)#1 (2) {
  ["ok"]=>
  bool(true)
  ["establishments"]=>
  array(4) {
    [0]=>
    object(stdClass)#2 (2) {
      ["level"]=>
      string(5) "admin"
      ["establishment"]=>
      object(stdClass)#3 (5) {
        ["id"]=>
        string(36) "0b246874-2c53-11e8-8fb6-001a4aa8ea16"
        ["name"]=>
        string(9) "robinsons"
        ["address"]=>
        string(24) "Belfast northern ireland"
        ["lat"]=>
        float(54.594869)
        ["lng"]=>
        float(-5.933954)
      }
    }
    [1]=>
    object(stdClass)#4 (2) {
      ["level"]=>
      string(5) "admin"
      ["establishment"]=>
      object(stdClass)#5 (5) {
        ["id"]=>
        string(36) "1e95af3a-2ce7-11e8-8fb6-001a4aa8ea16"
        ["name"]=>
        string(7) "reimink"
        ["address"]=>
        string(13) "dorpsstraat 6"
        ["lat"]=>
        float(123.123)
        ["lng"]=>
        float(-74.99)
      }
    }
    [2]=>
    object(stdClass)#6 (2) {
      ["level"]=>
      string(5) "admin"
      ["establishment"]=>
      object(stdClass)#7 (5) {
        ["id"]=>
        string(36) "3d1e500b-2c4d-11e8-8fb6-001a4aa8ea16"
        ["name"]=>
        string(14) "kelly's cellar"
        ["address"]=>
        string(24) "Belfast northern ireland"
        ["lat"]=>
        float(54.599508)
        ["lng"]=>
        float(-5.93216)
      }
    }
    [3]=>
    object(stdClass)#8 (2) {
      ["level"]=>
      string(5) "admin"
      ["establishment"]=>
      object(stdClass)#9 (5) {
        ["id"]=>
        string(36) "75987f56-2de4-11e8-8fb6-001a4aa8ea16"
        ["name"]=>
        string(7) "reimink"
        ["address"]=>
        string(12) "graslanden 2"
        ["lat"]=>
        float(3456.33)
        ["lng"]=>
        int(-1)
      }
    }
  }
}

上面的foreach循环似乎是我能得到的最接近的循环,但它只返回“oe”(不知道起源于何处)。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您尝试使用数组语法(带方括号)访问数据结构,但它不是数组。

TRUE作为json_decode()的第二个参数传递给它,要求它将JSON解码为数组(而非对象),foreach循环中的代码将按预期工作。

$decodeArray = json_decode($result, TRUE);

答案 1 :(得分:1)

您需要将true传递给json_decode才能获得数组,但是您需要查看嵌套:

foreach ($decodeArray['establishments'] as $values)
{ 
    echo $values['establishment']['name'];
}

要用你拥有的对象来做它:

foreach ($decodeArray->establishments as $values)
{ 
    echo $values->establishment->name;
}

oe来自仅有的两个顶级属性的第一个字母:“ok”“sitesments”。由于您尝试访问它们的方式,0被视为字符串索引,您正在对属性名称进行操作。