- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为 IteratorAggregate
仅提供对对象的类数组读取 访问是否正确?如果我需要写入对象数组,那么我需要使用 Iterator
吗?
尝试添加新元素时 IteratorAggregate 对象导致 fatal error 的演示如下:
<?
class foo implements IteratorAggregate {
public $_array = array('foo'=>'bar', 'baz'=>'quux');
public function getIterator() {
return new ArrayIterator($this->_array);
}
} // end class declaration
$objFoo = & new foo();
foreach ( $objFoo as $key => $value ) {
echo "key: $key, value: $value\n";
}
$objFoo['reeb'] = "roob";
foreach ( $objFoo as $key => $value ) {
echo "key: $key, value: $value\n";
}
$ php test.php
key: foo, value: bar
key: baz, value: quux
Fatal error: Cannot use object of type foo as array in /var/www/test.php on line 20
Call Stack:
0.0009 57956 1. {main}() /var/www/test.php:0
最佳答案
对于它的值(value),给定您的示例类,您可以使用 ArrayObject
(它实现了 IteratorAggregate
和 ArrayAccess
,例如我们想要)。
class Foo extends ArrayObject
{
public function __construct()
{
parent::__construct(array('foo' => 'bar', 'baz' => 'quux'));
}
}
$objFoo = new Foo();
foreach ( $objFoo as $key => $value ) {
echo "$key => $value\n";
}
echo PHP_EOL;
$objFoo['foo'] = 'badger';
$objFoo['baz'] = 'badger';
$objFoo['bar'] = 'badger';
foreach ( $objFoo as $key => $value ) {
echo "$key => $value\n";
}
输出如预期的那样:
foo => bar
baz => quux
foo => badger
baz => badger
bar => badger
关于php - 无法向 IteratorAggregate 写入新元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585164/
我有一个类,我希望能够遍历某个数组成员。我快速搜索并找到了 IteratorAggregate: class foo implements IteratorAggregate { protec
我认为 IteratorAggregate 仅提供对对象的类数组读取 访问是否正确?如果我需要写入对象数组,那么我需要使用 Iterator 吗? 尝试添加新元素时 IteratorAggregate
我正在尝试使用 PHP 的 IteratorAggregate,但运气不佳。实现 IteratorAggregate 的对象有一个属性 $items,它是一个对象数组 My_Object。 当用户使用
IteratorAggregate 是一个创建外部迭代器的接口(interface): class myData implements IteratorAggregate { public $
我正在编写依赖于外部类 exceptionManager 的单元测试。我希望能够预测此类中的一些特定函数将返回什么,所以我使用了一个模拟对象。代码非常简单: $mockExceptionManager
我是一名优秀的程序员,十分优秀!