ホームページ  >  記事  >  バックエンド開発  >  PHP はフォルダー内のすべてのディレクトリとファイルを走査します_PHP チュートリアル

PHP はフォルダー内のすべてのディレクトリとファイルを走査します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:39:32769ブラウズ

インタビュー中によくこの質問に遭遇します。php はフォルダー内のすべてのファイルとサブフォルダーをスキャンします。

この問題には多くの解決策があります。しかし、一般的な考え方は同じです。再帰を使用します。

<ol class="dp-c">
<li class="alt"><span><span> </span><span class="vars">$path</span><span> = </span><span class="string">./filepath</span><span>;  </span></span></li>
<li>
<span> </span><span class="keyword">function</span><span> getfiles(</span><span class="vars">$path</span><span>) </span>
</li>
<li class="alt"><span> { (!</span></li>is_dir<li>
<span>(</span><span class="keyword">$path</span><span>)) </span> <span class="func">戻る</span><span>;  </span><span class="vars"></span><span> </span><span class="keyword">$handle</span><span> = opendir(</span>
</li>$path<li class="alt">
<span>);  </span><span class="vars"></span><span> </span><span class="vars">while</span><span>( false !== (</span>
</li>$file<li>
<span> = readdir(</span><span class="keyword">$handle</span><span>))) </span><span class="vars"></span><span> { </span><span class="vars"></span><span> </span>
</li>if<li class="alt"><span>(</span></li> $file<li>
<span> != </span><span class="keyword">.</span><span> && </span><span class="vars">$file</span><span>!=</span><span class="string">..</span><span>) </span><span class="vars"></span> { <span></span><span class="string"> </span> <span></span>$path2</li>
<li class="alt">= <span></span>$path </li>
<li>.<span></span>/<span class="vars"></span>.<span></span>$file<span class="vars"></span>;  <span></span><span class="string"></span> <span></span>if<span class="vars"></span>(<span></span>is_dir</li>
<li class="alt">(<span></span>$path2<span class="keyword"></span>)) <span></span><span class="func"></span> { <span></span><span class="vars"></span> <span></span>エコー</li>
<li> <span></span>
</li>
<li class="alt">;  <span></span><span class="func"></span> <span></span>echo</li>
<li> <span></span>$file</li>
<li class="alt">;  <span></span><span class="func"></span> getfiles(<span></span>$path2<span class="vars"></span>);  <span></span>
</li>
<li> }<span></span>else<span class="vars"></span> <span></span>
</li>
<li class="alt"> { <span></span><span class="keyword"></span> <span></span>echo </li>
<li> <span></span>
</li>
<li class="alt">;  <span></span><span class="func"></span> <span></span>echo</li>
<li> <span></span>$file</li>
<li class="alt">;  <span></span><span class="func"></span> } <span></span><span class="vars"></span> } <span></span>
</li>
<li> } <span></span>
</li>
<li class="alt">}  </li>
<li><span> </span></li>
<li class="alt">
<span>  print_r( getfiles(</span><span class="vars">$path</span><span>));  </span>
</li>
<li><span> </span></li>
<li class="alt">
<span class="func">echo</span><span>   </span>
</li>
<li><span><HR>;  </span></li>
<li class="alt"><span> </span></li>
<li>
<span class="keyword">function</span><span> getdir(</span><span class="vars">$path</span><span>)  </span>
</li>
<li class="alt"><span>{  </span></li>
<li>
<span>    </span><span class="keyword">if</span><span>(!</span><span class="func">is_dir</span><span>(</span><span class="vars">$path</span><span>)) </span><span class="keyword">return</span><span>;  </span>
</li>
<li class="alt">
<span>    </span><span class="vars">$handle</span><span> = dir(</span><span class="vars">$path</span><span>);  </span>
</li>
<li>
<span>    </span><span class="keyword">while</span><span>(</span><span class="vars">$file</span><span>=</span><span class="vars">$handle</span><span>-&gt;read())  </span>
</li>
<li class="alt"><span>    {  </span></li>
<li>
<span>        </span><span class="keyword">if</span><span>(</span><span class="vars">$file</span><span>!=</span><span class="string">.</span><span> &amp;&amp; </span><span class="vars">$file</span><span>!=</span><span class="string">..</span><span>)  </span>
</li>
<li class="alt"><span>        {  </span></li>
<li>
<span>            </span><span class="vars">$path2</span><span> = </span><span class="vars">$path</span><span>.</span><span class="string">/</span><span>.</span><span class="vars">$file</span><span>;  </span>
</li>
<li class="alt">
<span>            </span><span class="keyword">if</span><span>(</span><span class="func">is_dir</span><span>(</span><span class="vars">$path2</span><span>))  </span>
</li>
<li><span>            {  </span></li>
<li class="alt">
<span>                    </span><span class="func">echo</span><span> </span><span class="vars">$file</span><span>.</span><span class="string">"	"</span><span>;  </span>
</li>
<li>
<span>                     getdir(</span><span class="vars">$path2</span><span>);  </span>
</li>
<li class="alt">
<span>            }</span><span class="keyword">else</span><span> </span>
</li>
<li><span>            {  </span></li>
<li class="alt">
<span>                </span><span class="func">echo</span><span> </span><span class="vars">$file</span><span>.  </span>
</li>
<li><span>;  </span></li>
<li class="alt"><span>            }  </span></li>
<li><span>        }  </span></li>
<li class="alt"><span>    }  </span></li>
<li><span>}  </span></li>
<li class="alt">
<span> getdir(</span><span class="vars">$path</span><span>);  </span>
</li>
<li><span> </span></li>
<li class="alt">
<span> </span><span class="func">echo</span><span>   </span>
</li>
<li><span><HR>;  </span></li>
<li class="alt"><span> </span></li>
<li>
<span> </span><span class="keyword">function</span><span> get_dir_scandir(</span><span class="</p">
<p align="left"></p>
<div style="display:none;">
<span id="url" itemprop="url">http://www.bkjia.com/PHPjc/486278.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/486278.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。 这个题目有好多种解决方法。但大致思路都一样。采用递归...</span>
</div>
<div class="art_confoot"></div>
</span>
</li>
</ol>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。