Position actuelle: Accueil> Derniers articles> Exemples pratiques de la mise en œuvre de la traversée du répertoire en combinant Chdir (), OpenDir () et ReadDir ()

Exemples pratiques de la mise en œuvre de la traversée du répertoire en combinant Chdir (), OpenDir () et ReadDir ()

gitbox 2025-09-09
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n&#39;a rien à voir avec le contenu de l&#39;article,Faites juste un exemple</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"PHP Exemple de traversée de répertoire commence&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * Combiné chdir()、opendir() et readdir() Exemples pratiques de la mise en œuvre de la traversée du répertoire
 *
 * exister PHP milieu,操作documentetTable des matières是常见需求,Surtout quand vous devez traverser le répertoire。
 * chdir() Vous pouvez modifier le répertoire de travail actuel,opendir() Utilisé pour ouvrir une poignée de répertoire,
 * readdir() 用于逐个读取Table des matièresmilieu的document或子Table des matières。
 *
 * Cet article passera un exemple,演示如何Combiné这三个函数实现Table des matières的遍历。
 */</span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">traverseDir</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$path</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Essayez d&#39;abord de changer le répertoire de travail</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">chdir</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Impossible de passer au répertoire:<span class="hljs-subst">$path</span></span></span><span>&lt;br&gt;";
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-comment">// Ouvrez le répertoire actuel</span></span><span>
    </span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'.'</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</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">"Impossible d&#39;ouvrir la poignée du répertoire&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Répertoire actuel: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">getcwd</span></span><span>() . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le contenu du répertoire est le suivant:&lt;br&gt;"</span></span><span>;
    
    </span><span><span class="hljs-comment">// 遍历Table des matièresmilieu的documentetdocument夹</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$entry</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// Ignorer les répertoires spéciaux . et ..</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'..'</span></span><span>) {
            </span><span><span class="hljs-keyword">continue</span></span><span>;
        }
        
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$entry</span></span><span>)) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"[Table des matières] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"[document] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        }
    }
    
    </span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}

</span><span><span class="hljs-comment">// Exemple d&#39;appel:Supposons qu&#39;il y ait un test_dir Table des matières</span></span><span>
</span><span><span class="hljs-variable">$testPath</span></span><span> = </span><span><span class="hljs-string">'test_dir'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">traverseDir</span></span><span>(</span><span><span class="hljs-variable">$testPath</span></span><span>);
</span></span>