-1
$arr = NSZone::find_all(array('per_page'=>20, 'page'=>1));  

返回结果是

 [0] => NSZone Object
        (
            [xml_skip_attribs:protected] => Array
                (
                    [0] => id
                )

            [vals:protected] => Array
                (
                    [total_count] => 3
                )
        )

他正在访问

arr[0]['vals:protected']['total_count'] in this way arr[0]->total_count()  

这意味着 total_count() 是一个函数,而根据数组结构,它看起来像数组索引。 请解释一下这段代码,它是如何工作的?什么是 [vals:protected],它也可以是公共的、私有的等,请问您知道更多解释吗?

4

2 回答 2

2

根据输出,arr[0]是一个对象(NSZone),它显然有一个total_count方法可以返回您在 中看到的值[total_count]

即使您看到protected范围解析,因为它是类total_count的假定成员变量,NSZone它对方法可用total_count

于 2012-04-26T04:23:49.453 回答
2

那不是一个数组,而是print_r($arr)NSZone Object的一个,如果您不在该类中,这意味着您在与您使用 print_r($arr) 相同的范围内访问它并且该属性设置为私有/受保护,那么您将无法访问其中的值如果您在对象之外,则需要添加某种 getter,或将其更改为公共对象。

如果该类使用__get()魔术方法,您可能可以像这样访问它: $arr->total_count;

或者您可以添加一个方法来获取它,并像这样访问它:$arr->getCount();

public function getCount(){
  return $this->vals->total_count;
}

但是没有看到课程,很难说,所以我可能完全出局了。

于 2012-04-26T04:24:16.550 回答