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());
}
?>
已有 0 条评论