php spl之迭代器iterator

1.ArrayIterator迭代器

常用方法:

ksort:根據鍵進行排序
asort:根據值進行排序
seek:將interator裏的第一個元素從0開始標記,依次遞增,seek是指跳到指定標記
循環時的方法包括current,rewind,key,next,valid.

使用方式:

常用的有foreach和while,其中我們以前所使用的foreach默認使用的就是迭代器方式。

<?php

    $arr= array('1' => 'one',
        '2' => 'two',
        '3' => 'three');

    $arrayobject = new ArrayObject($arr);
    $iterator = $arrayobject->getIterator();

    foreach ($arr as $k => $v) {
        echo $k.'->'.$v;
    }
 //1->one 2->two 3->three

    while($iterator->valid()){
        echo $iterator->key().'->'.$iterator->current();
        $iterator->next();
    }
//1->one 2->two 3->three

    if($iterator->valid()){
        $iterator->seek(2);            
        echo $iterator->current();    // two
    }

2.AppendIterator迭代器

AppendIterator能夠按照添加迭代器的順序順序一次遍歷多個迭代器。

<?php
 $array_a = new ArrayIterator(array('a','b','c'));
    $array_b = new ArrayIterator(array('d','e','f'));
    $it = new AppendIterator();
    $it->append($array_b);
    $it->append($array_a);
    foreach ($it as $key => $value) {
        echo $value."\n";
    }
        //d e f a b c

3.MultipleIterator迭代器

<?php
$idIter = new ArrayIterator(array('01','02','03'));
$nameIter = new ArrayIterator(array('張三','李四','王五'));
$ageIter = new ArrayIterator(array('22','23','25'));
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
$mit->attachIterator($idIter,"ID");
$mit->attachIterator($nameIter,"NAME");
$mit->attachIterator($ageIter,"AGE");
foreach ($mit as $value){
    print_r($value);
}

輸出爲:

Array
(
    [ID] => 01
    [NAME] => 張三
    [AGE] => 22
)
Array
(
    [ID] => 02
    [NAME] => 李四
    [AGE] => 23
)
Array
(
    [ID] => 03
    [NAME] => 王五
    [AGE] => 25
)

4.FilesystemIterator迭代器

<?php
$it = new FilesystemIterator('E:\yy');
foreach ($it as $finfo) {
    printf("%s\t%s\t%s\t%s\t%8s\t%s\n",
        date("Y-m-d H:i:s",$finfo->getMTime()),
    $finfo->getType(),
    $finfo->getExtension(),
        $finfo->isDir()?"<DIR>":"",
        $finfo->getSize(),
        $finfo->getFileName()
    );
}

輸出爲:


2014-08-25 15:54:42 dir 1   <DIR>      32768    6.26.0.1
2014-08-25 15:58:06 dir 0   <DIR>      36864    6.31.0.0
2014-08-25 15:58:22 file    xml          209    Launcher.xml
2013-05-21 10:13:14 dir CRT <DIR>       4096    Microsoft.VC90.CRT
2014-08-22 12:59:50 file    exe       623296    Uninstall.exe
2014-08-22 12:46:18 file    exe       133824    YY.exe
2014-08-22 12:50:10 file    exe       806080    yylauncher.exe
發佈了40 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章