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