gpt4 book ai didi

php - 对二维数组使用神奇的 __set() 方法

转载 作者:可可西里 更新时间:2023-11-01 00:27:36 27 4
gpt4 key购买 nike

如果我有以下注册表类:

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”数组?此代码:'array[] = item' 不适用于魔术设置方法,我无法通过谷歌找到任何有用的信息。感谢您的宝贵时间!

最佳答案

如果你有:

$reg = new registry();
$reg->arr = array(1,2,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);
}

关于php - 对二维数组使用神奇的 __set() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com