ArrayIterator迭代器用于遍历数组

熟悉使用foreach和while语句通过ArrayInterator遍历数组的方法

熟悉使用seek跳过某些元素的方法

熟悉使用ArrayIterator进行排序的方法

<?php

$fruits = array("apple"=>"apple value","orange"=>"orange value","grape"=>"grape value","plum"=>"plum value");

//使用ArrayIterator遍历数组

$obj = new ArrayObject($fruits);

$it = $obj->getIterator();

echo "use foreach--------------<br>";

foreach ($it as $key => $value) {

echo $key.":".$value."<br>";

}

echo "use while--------------<br>";

$it->rewind();//调用current之前一定要调用rewind

while($it->valid()){

echo $it->key().":".$it->current()."<br>";

$it->next();

}

echo "user seek--------------<br>";

//跳过某些元素进行打印

$it->rewind();

if($it->valid()){

$it->seek(1);//

while($it->valid()){

echo $it->key().":".$it->current()."<br>";

$it->next();

}

}

echo "use ksort-----------<br>";

//用ksrot排序(ksort是进行key排序,asort是进行value排序)

$it->ksort();

foreach ($it as $key => $value) {

echo $key.":".$value."<br>";

}

?>

AppendIterator能陆续遍历几个迭代器

-按顺序迭代访问几个不同的迭代器,例如,希望在一次循环中迭代访问两个或者更多的组合。

<?php

$arr_a = new ArrayIterator(array('a','b','c'));

$arr_b = new ArrayIterator(array('d','e','f'));

$it = new AppendIterator();

$it->append($arr_a);//通过append方法把迭代器对象添加到AppendIterator对象中

$it->append($arr_b);

echo "use foreach--------------<br>";

foreach ($it as $key => $value) {

echo $key.":".$value."<br>";

}

?>

MultipleIterator迭代器

MultipleIterator用于把多个Iterator里面的数据组合成为一个整体来访问

<?php

$arr_id = new ArrayIterator(array('01','02','03'));

$arr_name = new ArrayIterator(array('张三','李四','王武'));

$arr_age = new ArrayIterator(array('10','20','30'));

$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);

$mit->attachIterator($arr_id,'ID');

$mit->attachIterator($arr_name,'NAME');

$mit->attachIterator($arr_age,'AGE');

echo "use foreach--------------<br>";

foreach ($mit as $key => $value) {

print_r($value);

}

?>

FilesystemIterator 迭代器

FilesystemIterator 能遍历文件系统

<?php

date_default_timezone_set('PRC');

$it = new FilesystemIterator('.');

echo "use foreach--------------<br>";

foreach ($it as $key => $value) {

//$value->getMTime() 文件创建时间

//$value->isDir() 

//$value->getSize() 文件大小

//$value->getFileName() 文件名字

//echo $value.date("Y-m-d H:i:s",$value->getMTime())."<br>";

printf("%s\t%s\t%8s\t%s\n",date("Y-m-d H:i:s",$value->getMTime()),$value->isDir()?"<DIR>":"",$value->getSize(),$value->getFileName());

}

?>