在JS中你可以有这样的东西:
var a = [1, 2, 3];
a.myProp = false;
这是可能的,因为在js数组中实际上是对象。
我想要做的是实现相同的,但在PHP中。
我找到的最接近的解决方案是使用ArrayObject类,但这个“解决方案”的主要问题是它是对象,当您使用is_array
检查或尝试使用其他特定的数组方法,它将返回false或抛出错误。
有没有像__construct
这样神奇的php方法,或者类似于数组?
一般情况下 - 我想添加一些与数组值分开的标志。例如:
$a = [1, 2, 3];
$a.alreadyIterated = false;
foreach ($a as $item) {
...
}
$a.alreadyIterated = true;
...
if (!$a.alreadyIterated) {
foreach($a as $item) {...}
}
答案 0 :(得分:0)
在某种程度上可以通过创建自己的类来实现:
class PropArray implements ArrayAccess, Iterator {
public $alreadyIterated = false;
protected $a = []; # internal array for iterable values
# add required methods from the interfaces, pretty easy
}
实例仍然是对象,但可以像数组一样进行迭代并通过is_array($obj) || $obj instanceof Traversable
进行测试。