$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],它也可以是公共的,私人的等,请问您知道更多解释吗?
这不是一个数组,而是 NSZone 对象的print_r($arr)
,如果你不在类中,这意味着你在与使用 print_r($arr) 相同的范围内访问它并且属性设置为 private/protected,那么你无法访问对象中的值,如果你在它之外,你需要添加一个 getter , 或将其更改为公开。
如果类使用 __get() 魔术方法,您可以像这样访问它: $arr->total_count;
或者你可以添加一个方法来获取它,并像这样访问它:$arr->getCount();
public function getCount(){
return $this->vals->total_count;
}
但是没有看到班级,很难说,所以我可以完全出局。
根据输出,arr[0]
是一个对象(NSZone),它显然有一个total_count
方法返回您在[total_count]
中看到的值。
即使您看到protected
范围解析,由于total_count
是 NSZone
类的假定成员变量,因此可用于 total_count
方法。