<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[php5中的迭代器]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Mon, 13 Sep 2010 08:30:15 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/><div class="code">ArrayObject<br/>ArrayIterator<br/>Recursive Array Iterator<br/>PDO &amp; IteratorIterator<br/>FilterIterator<br/>XML &amp; RecursiveIteratorIterator<br/>SimpleXMLIterator<br/>LimitIterator &amp; ArrayIterator<br/>SPLFileObject<br/>下面是 SPL 提供的其他的迭代器：<br/><br/>* RecursiveIterator<br/>* RecursiveIteratorIterator<br/>* OuterIterator<br/>* IteratorIterator<br/>* FilterIterator<br/>* RecursiveFilterIterator<br/>* ParentIterator<br/>* SeekableIterator<br/>* LimitIterator<br/>* GlobIterator<br/>* CachingIterator<br/>* RecursiveCachingIterator<br/>* NoRewindIterator<br/>* AppendIterator<br/>* RecursiveIteratorIterator<br/>* InfiniteIterator<br/>* RegexIterator<br/>* RecursiveRegexIterator<br/>* EmptyIterator<br/>* RecursiveTreeIterator<br/>* ArrayIterator<br/><br/>//得到 DirectoryIterator中所有的方法<br/>foreach(get_class_methods(new DirectoryIterator(&#039;./&#039;)) as $key=&gt;$method)&#123;<br/>echo $key.&#039;-&gt;&#039;.$method.&#039;&lt;br /&gt;&#039;;<br/>&#125;<br/><br/>//ArrayObject<br/>$array = array(&#039;koala&#039;, &#039;kangaroo&#039;, &#039;wombat&#039;, &#039;wallaby&#039;, &#039;emu&#039;, &#039;kiwi&#039;, &#039;kookaburra&#039;, &#039;platypus&#039;);<br/>$arrayObj = new ArrayObject($array);<br/>for($iterator = $arrayObj-&gt;getIterator();$iterator-&gt;valid();$iterator-&gt;next())&#123;<br/>echo $iterator-&gt;key() . &#039; =&gt; &#039; . $iterator-&gt;current() . &#039;&lt;br /&gt;&#039;;<br/>&#125;<br/>//目录迭代器<br/>$dir = new DirectoryIterator(&#039;F:&#92;xing&#92;public&#92;images&#039;);<br/>$arr = array();<br/>while($dir-&gt;valid())&#123;<br/>if(!$dir-&gt;isDir())&#123;//如果不是目录<br/>$arr&#91;&#93; = $dir-&gt;getFilename();//把目录中的所有文件放到数组中<br/>&#125;<br/>$dir-&gt;next();<br/>&#125;<br/>echo &#039;&lt;pre&gt;&#039;;<br/>print_r($arr);<br/><br/>class RecursiveFileFilterIterator extends FilterIterator&#123;<br/>// 满足条件的扩展名<br/>protected $ext = array(&#039;jpg&#039;,&#039;gif&#039;);<br/>//提供 $path 并生成对应的目录迭代器<br/>public function __construct($path) &#123;<br/>parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));<br/>&#125;<br/>//检查文件扩展名是否满足条件<br/>public function accept() &#123;<br/>$item = $this-&gt;getInnerIterator();<br/>if ($item-&gt;isFile() &amp;&amp; in_array(pathinfo($item-&gt;getFilename(), PATHINFO_EXTENSION), $this-&gt;ext))&#123;<br/>return true;<br/>&#125;<br/>&#125;<br/>&#125;<br/>foreach (new RecursiveFileFilterIterator(&#039;F:&#92;xing&#92;public&#92;images&#039;) as $item) &#123; // 实例化<br/>$arr&#91;&#93; = $item-&gt;getFilename();<br/>&#125;<br/>echo &#039;&lt;pre&gt;&#039;;<br/>print_r($arr);<br/><br/>//RecursiveIteratorIterator&nbsp;&nbsp;迭代器<br/>$array = array(<br/>array(&#039;name&#039;=&gt;&#039;butch&#039;, &#039;sex&#039;=&gt;&#039;m&#039;, &#039;breed&#039;=&gt;&#039;boxer&#039;),<br/>array(&#039;name&#039;=&gt;&#039;fido&#039;, &#039;sex&#039;=&gt;&#039;m&#039;, &#039;breed&#039;=&gt;&#039;doberman&#039;),<br/>array(&#039;name&#039;=&gt;&#039;girly&#039;,&#039;sex&#039;=&gt;&#039;f&#039;, &#039;breed&#039;=&gt;&#039;poodle&#039;)<br/>);<br/>foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $key=&gt;$value)&#123;<br/>echo $key.&#039; -&gt; &#039;.$value.&#039;&lt;br /&gt;&#039;;<br/>&#125;<br/><br/>//FilterIterator&nbsp;&nbsp;迭代器<br/>$animals = array(&#039;koala&#039;, &#039;kangaroo&#039;, &#039;wombat&#039;, &#039;wallaby&#039;, &#039;emu&#039;, &#039;NZ&#039;=&gt;&#039;kiwi&#039;, &#039;kookaburra&#039;, &#039;platypus&#039;);<br/>class CullingIterator extends FilterIterator&#123;<br/>public function __construct( Iterator $it )&#123;<br/>parent::__construct( $it );<br/>&#125;<br/>function accept()&#123;<br/>return is_numeric($this-&gt;key());<br/>&#125;<br/>&#125;<br/>$cull = new CullingIterator(new ArrayIterator($animals));//过滤key不为数字的值<br/>foreach($cull as $key=&gt;$value)&#123;<br/>echo $key.&#039; == &#039;.$value.&#039;&lt;br /&gt;&#039;;<br/>&#125;<br/>//XML &amp; RecursiveIteratorIterator&nbsp;&nbsp; SimpleXMLIterator 迭代器<br/>$it = simplexml_load_string($string, &#039;SimpleXMLIterator&#039;);<br/>foreach(new RecursiveIteratorIterator($it, 1) as $name =&gt; $data)&#123;<br/>echo $name.&#039; -- &#039;.$data.&#039;&lt;br /&gt;&#039;;<br/><br/>//SplFileObject文件对象,读文件<br/>$file = new SplFileObject(&quot;./a.php&quot;);<br/>while($file-&gt;valid())&#123;<br/>echo $file-&gt;current().&#039;&lt;br/&gt;&#039;;<br/>$file-&gt;next();<br/>&#125;<br/>//LimitIterator 迭代器 &amp; ArrayIterator<br/>$offset = 3;<br/>$limit = 2;<br/>$array = array(&#039;koala&#039;, &#039;kangaroo&#039;, &#039;wombat&#039;, &#039;wallaby&#039;, &#039;emu&#039;, &#039;kiwi&#039;, &#039;kookaburra&#039;, &#039;platypus&#039;);<br/>$it = new LimitIterator(new ArrayIterator($array), $offset, $limit);<br/>foreach($it as $k=&gt;$v)&#123;<br/>echo $it-&gt;getPosition().&#039;&lt;br /&gt;&#039;;<br/>&#125;<br/>//PDO &amp; IteratorIterator<br/>try &#123;<br/>$dsn = new PDO(&quot;sqlite2:/home/kevin/html/periodic.sdb&quot;);<br/>$stmt = $dsn-&gt;prepare(&#039;SELECT * FROM periodic ORDER BY atomicnumber&#039;);<br/>$stmt-&gt;execute();<br/>$it = new IteratorIterator($stmt);<br/>foreach($it as $row)&#123;<br/>$arrayObj = new ArrayObject($row);<br/>for($iterator = $arrayObj-&gt;getIterator();$iterator-&gt;valid();$iterator-&gt;next())&#123;<br/>echo $iterator-&gt;current() . &#039;&lt;br /&gt;&#039;;<br/>&#125;<br/>echo &#039;&lt;hr /&gt;&#039;;<br/>&#125;<br/><br/>$dsn = null;<br/>&#125;catch (PDOException $e)&#123;<br/>print &quot;Error!: &quot; . $e-&gt;getMessage() . &quot;&lt;br /&gt;&quot;;<br/>&#125;</div>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] php5中的迭代器]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>