<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这里是与文章内容无关的PHP代码示例,可以放置初始化、配置等内容</span></span><span>
</span><span><span class="hljs-comment">// 例如,设置时区</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h2>PHP rewinddir和readdir函数如何配合使用才能高效读取目录内容?</h2>
<p>在PHP中,操作目录内容时,常用的函数有 <code></span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>()
rewinddir() 会将目录句柄指针重新指向目录的开头。也就是说,当你已经读取到目录末尾,但想重新从头开始遍历时,可以调用此函数。
在实际应用中,有时需要多次读取同一个目录的内容,例如先筛选符合条件的文件,再对其做进一步处理。这时,使用 rewinddir() 可以避免重复调用 opendir(),提高效率。
</span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/dir'</span></span><span>);
</span><span><span class="hljs-comment">// 第一次遍历:读取所有文件,找出所有.php文件</span></span><span>
</span><span><span class="hljs-variable">$phpFiles</span></span><span> = [];
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, PATHINFO_EXTENSION) === </span><span><span class="hljs-string">'php'</span></span><span>) {
</span><span><span class="hljs-variable">$phpFiles</span></span><span>[] = </span><span><span class="hljs-variable">$file</span></span><span>;
}
}
</span><span><span class="hljs-comment">// 重新回到目录开头,进行第二次遍历(如果需要)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);
</span><span><span class="hljs-comment">// 第二次遍历:打印所有文件名,演示使用rewinddir</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件名: <span class="hljs-subst">$file</span></span></span><span>\n";
}
</span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);
通过 rewinddir() 和 readdir() 的合理配合,PHP程序可以高效且灵活地读取目录内容,减少资源消耗,提高代码的可维护性和性能。