php spl set,PHP,SPL预定义常量

我将概述(部分)来自page you linked to的类常量,然后提出其他几点。

RecursiveIteratorIterator迭代模式

RecursiveIteratorIterator::LEAVES_ONLY迭代模式。 (这是默认模式。)

此迭代模式(三个中的一个)将迭代期间可用的项目限制为仅仅“叶子”(将递归结构视为具有一系列分支发芽其他分支的树,或者在没有更多分支的情况下,最后有叶子)。在数组array('a'=>array('b','c'),'d','e'=>array('f','g'))中,叶子为b,c,d,f和g,因为它们在最后,它们不是发芽任何更多的项目。

给出一个显示此模式的代码片段(将会有一系列示例具有相同的递归数组迭代器以及使用不同模式和标志的递归迭代器迭代器):

$array = array('a'=>array('b','c'),'d','e'=>array('f','g'));

$ait = new RecursiveArrayIterator($array);

// Only iterate over leaves

$rit = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::LEAVES_ONLY);

foreach ($rit as $item) {

echo $item;

}

// Output: bcdfg

RecursiveIteratorIterator::SELF_FIRST迭代模式。

这种迭代模式指示迭代器在迭代时将“父”项(即不是叶子)放在它们的子项(如果有的话)之前。

// Parents come first

$rit = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::SELF_FIRST);

foreach ($rit as $key => $item) {

if (is_array($item)) echo "[$key]"; // parent

else echo $item; // child

}

// Output: [a]bcd[e]fg

RecursiveIteratorIterator::CHILD_FIRST迭代模式。

这种迭代模式围绕父/子位置进行交换,使得子项(叶子)首先出现,然后是父项,如下所示:

// Children first

$rit = new RecursiveIteratorIterator($ait, RecursiveIteratorIterator::CHILD_FIRST);

foreach ($rit as $key => $item) {

if (is_array($item)) echo "[$key]"; // parent

else echo $item; // child

}

// Output: bc[a]dfg[e]

其他要点

RecursiveIteratorIterator构造函数标记

这些只是迭代迭代迭代器的三种模式(仅叶子,父亲优先或子优先)的常量。 RecursiveIteratorIterator还有一个flags参数,它会影响其他行为,例如是否在子对象抛出异常时停止,是否为项目调用__toString等等(标志为CachingIterator常数,同样没有文件记录。)

其他SPL常量

这与我的下一点有关。没有单一的一站式点,它列出了整个SPL中可用的所有常量:大多数类甚至没有列出自己的常量。但是,您可以使用reflection来查看可用的常量。在命令行中使用类似php --rc recursiveiteratoriterator | grep -i constant的内容来查看RecursiveIteratorIterator的常量列表。

缺乏文档

PHP手册中提供的文档完全是由志愿者编写的。特别是SPL是一个痛处,在该区域为船形并且符合标准之前仍有大量工作要做。如果有人想帮忙(不确定SO是否会考虑这个广告?)然后联系我(salathe@php.net)或注册PHP文档邮件列表(发送一封空白的电子邮件到phpdoc-subscribe@lists.php .net)并陷入其中。越多越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值