在stp中将std类对象操作为数组

时间:2014-03-23 01:38:25

标签: php arrays api object

我从一个叫房子清单的api中提取价格。我对如何操纵“std类对象”中的各个条目感到困惑。 (它具有阵列的所有外观,但不是......)

我的问题是我如何有选择地访问std类对象中的数据并将其过滤掉,以便我只有一个由以下组成的数组:

纬度值, longditude-values和price-values

我的curl调用正在运行,我可以使用print_r转储数据。该数据如下所示:

stdClass Object
(
    [result_count] => 199
    [longitude] => -0.092534
    [area_name] => 
    [listing] => Array
        (
            [0] => stdClass Object
                (
                    [image_caption] => Exterior Cgi.Jpg
                    [status] => for_sale
                    [num_floors] => 0
                    [listing_status] => sale
                    [num_bedrooms] => 3
                    [latitude] => 51.48961
                    [num_bathrooms] => 3
                    [post_town] => London
                    [outcode] => SE1
                    [last_published_date] => 2014-03-12 03:00:57
                    [county] => London
                    [price] => 5000000
                    [listing_id] => 32200697
                )

        [1] => stdClass Object
            (
            ...
            )
        [2] => stdClass Object
            (
            ...
            )

我已经研究了如何使用以下方法打印单个值:

print $data->listing[0]->price;

但我无法查看所有数据的foreach语句:

//e.g.
foreach ($data->listing->item as $item){
  print "<li>$item->title</li>\n";
}
//or
foreach($data->listing as $key => $val)
{
echo "Price: ".$key->price;
} 

1 个答案:

答案 0 :(得分:0)

使用$data->listing as $item可以解决问题:

foreach($data->listing as $item)
{
   echo "Price: ".$item->price;
} 

要将SDTClass个容器作为数组使用,您可以自由地将它们转换为数组:

$item = (array) $item ;
$item['price']; //Access its properties.