<?php $data = array('Pera', 'Mela', 'Arancia', 'Kiwi'); $iterator = new ArrayIterator($data); $iterator->natsort(); foreach ($iterator as $value) { echo $value, PHP_EOL; } echo PHP_EOL; class Person { public $cognome = 'Rossi'; public $nome = 'Mario'; } $iterator = new ArrayIterator(new Person()); $iterator->natsort(); foreach ($iterator as $index => $value) { echo $index . ': ' . $value, PHP_EOL; }
<?php $a = array(1, 2, 3); $o = new ArrayIterator($a); var_dump($o->next()); var_dump($o->rewind()); var_dump($o->seek()); var_dump($o->asort()); var_dump($o->ksort()); var_dump($o->natsort()); var_dump($o->natcasesort());
public function natsort() { parent::natsort(); $this->refreshPositions(); }
* 如果要支持多维数组,便用RecursiveArrayIterator生成一个Iterator。然后再说对这个Iterator使用RecursiveIteratorIterator * */ $array = array('value1', 'value3', 'value2', 'value4', 'value5'); try { $object = new ArrayIterator($array); // 判断第二个节点是否存在 if ($object->offsetExists(2)) { // 给第二个节点赋新值 $object->offsetSet(2, 'value2_1'); } // 在数组最后插入新值 $object->append('value_6'); // 自然排序排序 natsort(): 数组进行自然排序; natcasesort():对数组进行自然排序,并不区分大小写 // uasort(): uksort(): 通过在参数中传递已定义的排序方式进行排序; $object->natsort(); // 检查key为3所对应的值 $object->offsetGet(3); // 销毁key为3的值 $object->offsetUnset(3); // 指针跳转到第5个节点 $object->seek(4); // foreach 循环 /** * 如下的写法经调试出现了一个bug。 * 当在循环中进行offsetUnset时,此时,当前指针会回跳会第一个节点,即$object->key()的值为0,但是此时循环的key值和value值并没有变,依然是3=>value4。 * 而再次foreach循环之前,$object->key()值为0.循环后,$object->key()为1,所有,此时循环重复值。 */ foreach ($object as $key => $value) { echo '<li>' . $key . '=>' . $value . '</li>' . "\n"; }