- Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.30, 7.0.0 - 7.0.20, 7.1.0 - 7.1.7
- Error!
<?php
class A
{
public $val;
public function __construct($val) { $this->val = $val; }
}
$storage = new SplObjectStorage;
$storage->attach(new A(1));
$storage->attach(new A(2));
$storage->attach(new A(3));
$storage->attach(new A(4));
$storage->attach(new A(5));
$storage->attach(new A(6));
$storage->attach(new A(7));
$storage->attach(new A(8));
$storage->attach(new A(9));
$storage->attach(new A(10));
$storage->rewind();
$iterated = 0;
$expected = count($storage);
while ($storage->valid()) {
$iterated++;
$object = $storage->current();
//echo $iterated . '(' . $object->val . ') - ';
$storage->next();
foreach (range(1, 10) as $number) {
if(rand(1,10) == $number) {
// echo ' ' . $object->val . ' ';
$storage->detach($object);
unset($storage[$object]);
continue;
}
}
// echo PHP_EOL;
}
if(count($storage) != $expected) {
echo 'Error!' . PHP_EOL;
}
exit;