访问数组中数组内的对象


Access object within an array within an array

我的API调用给了我以下代码:

Array ( [ABC01] => 
       Array ( [0] => 
              stdClass Object ( 
                   [hostid] => 12345 
                   [location_lat] => 40 
                   [location_lon] => 70 
                   [site_address_a] => Hello World Blvd 
                   [site_address_b] => Foo 100 
                   [site_city] => Redmond
                   [site_state] => Washington
                   [site_country] => USA ) )

最终,我试图得到这个:

Array ( [ABC01] =>  
                   [hostid] => 12345 
                   [location_lat] => 40 
                   [location_lon] => 70 
                   [site_address_a] => Hello World Blvd 
                   [site_address_b] => Foo 100 
                   [site_city] => Redmond
                   [site_state] => Washington
                   [site_country] => USA ) )

我有将近三个前臂环,我还是有点迷路。我知道一定有一个简单的方法,但我不太熟悉PHP。我只是用get_object_vars来获取位置对象:

 foreach($getLocations as $key => $value) {
    print_r(get_object_vars($value[0]));
}

我走对了吗?然后我弄不清楚如何将其与主机名(ABC01)联系起来,因为这是我想要输出的,而不是主机ID。感谢您的帮助,这个PHP noob对此表示感谢。

如果您想要的输出实际上是这样的:

array(1) {
  ["ABC01"]=>
  array(8) {
    ["hostid"]=>
    int(12345)
    ["location_lat"]=>
    int(40)
    ["location_lon"]=>
    int(70)
    ["site_address_a"]=>
    string(16) "Hello World Blvd"
    ["site_address_b"]=>
    string(7) "Foo 100"
    ["site_city"]=>
    string(7) "Redmond"
    ["site_state"]=>
    string(10) "Washington"
    ["site_country"]=>
    string(3) "USA"
  }
}

那么,是的,我认为你走在了正确的轨道上,这应该会产生它:

$output = [];
foreach($data as $key => $value) {
    $output[$key] = get_object_vars($value[0]);
}
var_dump($output);

请注意,这假定每个主机名都有一个"0"元素。

然后我弄不明白如何将其与主机名(ABC01)联系起来因为这是我想要输出的,而不是hostid

主机名是foreach中的$key,用于指定输出数组的键。