PHP,SPL predefined constants
题
我在哪里可以得到一些有关参考文献 SPL predefined constants
喜欢 SELF_FIRST
,CHILD_FIRST
?上 php.net 我没得到多少(只要他们的类型)。
解决方案
我将概述(某些)从您链接到的再提高页面类常数其他一些点。
RecursiveIteratorIterator迭代模式
在RecursiveIteratorIterator::LEAVES_ONLY
迭代模式。 (这是默认模式。)
此迭代模式(3中的一个)限制可用的项目迭代只有“叶子”期间(认为递归结构的为树与一个串联支路发芽其它分支,或者在没有更多的分支的情况下的,具有在端部叶)。在阵列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提供的常量:大多数类甚至不列出自己的常量。但是,您可以使用反射采取偷看可用常量。在命令行中使用类似php --rc recursiveiteratoriterator | grep -i constant
看到RecursiveIteratorIterator的常量列表。
<强>缺乏文件强>
在PHP手册提供的说明文件被写入(几乎)完全由志愿者。特别是SPL是一个痛处与那里仍然工作要做之前面积船型和先进的标准,数额巨大。如果有人想在帮助(不知道如果是的话会考虑这种广告?)然后我联系(salathe@php.net)或注册到PHP文件的邮件列表(发送空白电子邮件至phpdoc-subscribe@lists.php .NET)和卡住英寸越多,越多越好。
其他提示