我遇到了一个有趣的问题.在使用[]的同一操作中创建数组属性并为其分配值似乎是错误的.
class T
{
public function __get($property)
{
if (!isset($this->{$property}))
{
$this->{$property} = array();
}
return $this->{$property};
}
public function __set($key, $val)
{
$this->{$key} = $val;
}
}
$testObj = new T();
$testObj->testArr[] = 1;
$testObj->testArr[] = 2;
$testObj->testArr[] = 3;
var_dump($testObj->testArr);
输出以下内容:
array(2) { [0]=> int(2) [1]=> int(3) }
因此1确实像帽子中的兔子一样神奇地消失在数组初始化中.如果我在分配之前尝试全部$testObj-> testArr或什至将1分配为$testObj-> testArr = array(1); -效果很好.但是我想了解这种情况并有一个通用的解决方案,而无需先初始化数组.有办法解决吗?
解决方法:
$testObj->testArr[] = 1;
通知您:
Notice: Indirect modification of overloaded property T::$testArr has no effect in test.php on line 24
确保您的错误报告为turned on.
标签:properties,get,arrays,php
来源: .html
本文发布于:2024-02-02 12:10:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170684703343704.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |