1.迭代器的介绍
·什么是迭代器?
-怎样获得链表中的每一个节点信息
节点1<---->节点2<---->节点3
↑链表指针
通过某种统一的方式遍历链表或者数组中的元素的过程
叫做迭代遍历,而这种统一的遍历工具我们叫做迭代器
·PHP中迭代器是通过Iterator接口定义的
节点1<--next()-->节点2<--next()-->节点3
↑current();
2.ArrayIterator迭代器
·ArrayIterator迭代器用于遍历数组
-熟悉使用foreach和while语句通过ArrayIterator遍历数组的方法
-熟悉使用seek跳过某些元素的方法
-熟悉使用ArrayIterator进行排序的方法
实例:
<?php
$fruits = array(
"apple"=>'apple value', //position=0
"orange"=>'orange value', //position=1
"grape"=>'grape value',
"plum"=>'plum value'
);
echo "<pre>";
print_r($fruits);
echo "</pre>";
echo "***** fenge *****<br>";
foreach ($fruits as $key => $value) {
echo $key.":".$value."<br>";
}
echo "<br>***** fenge *****<br>";
//使用ArrayIterator遍历数组
$obj = new ArrayObject($fruits);
$it = $obj->getIterator();
while($it->valid()){
echo $it->key().":".$it->current()."<br>";
$it->next();
}
echo "<br>***** fenge *****<br>";
// 跳过某些元素进行打印
$it->rewind();
if($it->valid()){
$it->seek(1); //搜寻从数组下表为1开始找
while($it->valid()){
echo $it->key().":".$it->current()."<br>";
$it->next();
}
}
echo "<br>***** fenge *****<br>";
$it->ksort(); //可以按字母对键值进行排序
foreach ($it as $key => $value) {
echo $key.":".$value."<br>";
}
echo "<br>***** fenge *****<br>";
$it->asort(); //可以按字母对值进行排序
foreach ($it as $key => $value) {
echo $key.":".$value."<br>";
}
?>
3.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_a);
$it->append($array_b);
// 通过append方法把迭代器对象添加到AppendIterator对象中
foreach($it as $key => $value){
echo $value."<br>";
}
?>
4.MultipleIterator迭代器
·MultipleIterator用于把多个Iterator里面的数据组合成为一个整体来访问
实例代码:
<?php
$idIter = new ArrayIterator(array('0','1','2'));
$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 $key => $value) {
echo "<pre>";
print_r($value);
echo "</pre>";
}
?>
5.FilesystemIterator
·FilesystemIterator能遍历文件系统
实例:
<?php
date_default_timezone_set("PRC");
$it = new FileSystemIterator('.');
foreach ($it as $finfo) {
printf("%s %s %8s %s<br>",
date("Y-m-d H:i:s",$finfo->getMTime()),
$finfo->isDir()?"Dir":"",
number_format($finfo->getSize()),//格式化,每三位数加一逗号
$finfo->getFileName()
);
echo "<br>";
}
?>
·什么是迭代器?
-怎样获得链表中的每一个节点信息
节点1<---->节点2<---->节点3
↑链表指针
通过某种统一的方式遍历链表或者数组中的元素的过程
叫做迭代遍历,而这种统一的遍历工具我们叫做迭代器
·PHP中迭代器是通过Iterator接口定义的
节点1<--next()-->节点2<--next()-->节点3
↑current();
2.ArrayIterator迭代器
·ArrayIterator迭代器用于遍历数组
-熟悉使用foreach和while语句通过ArrayIterator遍历数组的方法
-熟悉使用seek跳过某些元素的方法
-熟悉使用ArrayIterator进行排序的方法
实例:
<?php
$fruits = array(
"apple"=>'apple value', //position=0
"orange"=>'orange value', //position=1
"grape"=>'grape value',
"plum"=>'plum value'
);
echo "<pre>";
print_r($fruits);
echo "</pre>";
echo "***** fenge *****<br>";
foreach ($fruits as $key => $value) {
echo $key.":".$value."<br>";
}
echo "<br>***** fenge *****<br>";
//使用ArrayIterator遍历数组
$obj = new ArrayObject($fruits);
$it = $obj->getIterator();
while($it->valid()){
echo $it->key().":".$it->current()."<br>";
$it->next();
}
echo "<br>***** fenge *****<br>";
// 跳过某些元素进行打印
$it->rewind();
if($it->valid()){
$it->seek(1); //搜寻从数组下表为1开始找
while($it->valid()){
echo $it->key().":".$it->current()."<br>";
$it->next();
}
}
echo "<br>***** fenge *****<br>";
$it->ksort(); //可以按字母对键值进行排序
foreach ($it as $key => $value) {
echo $key.":".$value."<br>";
}
echo "<br>***** fenge *****<br>";
$it->asort(); //可以按字母对值进行排序
foreach ($it as $key => $value) {
echo $key.":".$value."<br>";
}
?>
3.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_a);
$it->append($array_b);
// 通过append方法把迭代器对象添加到AppendIterator对象中
foreach($it as $key => $value){
echo $value."<br>";
}
?>
4.MultipleIterator迭代器
·MultipleIterator用于把多个Iterator里面的数据组合成为一个整体来访问
实例代码:
<?php
$idIter = new ArrayIterator(array('0','1','2'));
$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 $key => $value) {
echo "<pre>";
print_r($value);
echo "</pre>";
}
?>
5.FilesystemIterator
·FilesystemIterator能遍历文件系统
实例:
<?php
date_default_timezone_set("PRC");
$it = new FileSystemIterator('.');
foreach ($it as $finfo) {
printf("%s %s %8s %s<br>",
date("Y-m-d H:i:s",$finfo->getMTime()),
$finfo->isDir()?"Dir":"",
number_format($finfo->getSize()),//格式化,每三位数加一逗号
$finfo->getFileName()
);
echo "<br>";
}
?>