php – 使用带有2D数组的magic __set()方法
发布时间:2020-12-13 21:36:46 所属栏目:PHP教程 来源:网络整理
导读:如果我有以下注册表类: Class registry { private $_vars; public function __construct() { $this-_vars = array(); } public function __set($key,$val) { $this-_vars[$key] = $val; } public function __get($key) { if (isset($this-_vars[$key])) ret
如果我有以下注册表类:
Class registry { private $_vars; public function __construct() { $this->_vars = array(); } public function __set($key,$val) { $this->_vars[$key] = $val; } public function __get($key) { if (isset($this->_vars[$key])) return $this->_vars[$key]; } public function printAll() { print "<pre>".print_r($this->_vars,true)."</pre>"; } } $reg = new registry(); $reg->arr = array(1,2,3); $reg->arr = array_merge($reg->arr,array(4)); $reg->printAll(); 是否有更简单的方法将新项目推送到’arr’数组? 解决方法
如果你有:
$reg = new registry(); $reg->arr = array(1,3); $reg->arr = 4; 你期待的是: Array ( [arr] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) ) 您需要做的就是将__set方法更新为: public function __set($key,$val){ if(!array_key_exists($key,$this->_vars)){ $this->_vars[$key] = array(); } $this->_vars[$key] = array_merge($this->_vars[$key],(array)$val); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |