2016-03-21 92 views
0

我连接到一个API,该API返回此嵌套对象值。foreach嵌套对象php

我该如何迭代每个[“number:protected”]?这对我来说是新东西,我只想返回“number:protected”。

Array 
(
[0] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,10,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

[1] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,15,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

[2] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,16,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

[3] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,17,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

[4] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,18,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

[5] => SDK2go\seat2go Object 
    (
     [status:protected] => Vacant 
     [number:protected] => D,19,A,STR3,ROOM 
     [passenger:protected] => 
     [price:protected] => 
    ) 

) 

我有一些,但没有结果表明:

foreach($sList as $list){ 
    echo $list['number:protected']; 
} 

请帮助。提前致谢。

+2

'SDK2go \ seat2go'类是怎么样的?有没有'getNumber()'方法内?如果是的话,就像'$ list-> getNumber()'一样调用它。你应该搜索任何公共方法来查看要使用什么.. –

+1

这些是对象数组中的名称空间类的实例。您正尝试访问类中的受保护属性。这不会是一个选项,因为受保护的属性.. ..保护..检查了这一点:http://stackoverflow.com/questions/4361553/php-public-private-protected ...作为@MateiMihai上面提到的,应该成为一个_“getter”_方法,它可以让你获得这些属性。 – CodeGodie

+0

好了。 .echo $ obj-> getNumber(); – user3651476

回答

0

因此,这里发生的事情是,您的API正在以数组内的对象形式返回一个类的实例。要模仿它看看下面的代码:

<?php 

namespace SDK2go; 

class seat2go 
{ 
    protected $status; 
    protected $number; 
    protected $passenger; 
    protected $price; 

    public function __construct($status, $number) 
    { 
     $this->status = $status; 
     $this->number = $number; 
    } 

    public function get_status() 
    { 
     echo $this->status; 
    } 

    public function get_number() 
    { 
     echo $this->number; 
    } 
} 

$arr = array(
    new seat2go("Vacant", "D,10,A,STR3,ROOM"), 
    new seat2go("Vacant", "D,15,A,STR3,ROOM"), 
    new seat2go("Vacant", "D,16,A,STR3,ROOM") 
); 


echo "<pre>"; 
print_r($arr); 
echo "</pre>"; 

以上将给你你有print_r结果。因此,为了访问这些属性,您必须调用类应该具有的getter函数。因为如此:

foreach ($arr as $a) { 
    echo $a->get_status(); 
    echo $a->get_number(); 
} 

希望这有助于。