{"id":15093,"date":"2024-03-15T10:31:25","date_gmt":"2024-03-15T10:31:25","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/"},"modified":"2025-08-06T15:41:36","modified_gmt":"2025-08-06T15:41:36","slug":"how-to-traverse-directories-and-files-in-php","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/","title":{"rendered":"How to traverse directories and files in PHP?"},"content":{"rendered":"<p>To traverse directories and files, you can utilize PHP&#8217;s scandir() function and recursive method.<\/p>\n<p>Firstly, use the scandir() function to retrieve the names of all files and subdirectories in a directory. Then, iterate through the returned array using a loop and check if each element is a file or a directory.<\/p>\n<p>If it is a directory, use recursive function call to traverse the directory and perform the same operation. If it is a file, handle it accordingly.<\/p>\n<p>Here is an example code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">traverseDirectory<\/span>(<span class=\"hljs-params\"><span class=\"hljs-variable\">$dir<\/span><\/span>) <\/span>{\r\n    <span class=\"hljs-variable\">$files<\/span> = <span class=\"hljs-title function_ invoke__\">scandir<\/span>(<span class=\"hljs-variable\">$dir<\/span>); <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u76ee\u5f55\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u548c\u5b50\u76ee\u5f55\u7684\u540d\u79f0<\/span>\r\n\r\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$files<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$file<\/span>) {\r\n        <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$file<\/span> != <span class=\"hljs-string\">'.'<\/span> &amp;&amp; <span class=\"hljs-variable\">$file<\/span> != <span class=\"hljs-string\">'..'<\/span>) { <span class=\"hljs-comment\">\/\/ \u6392\u9664\u5f53\u524d\u76ee\u5f55\u548c\u4e0a\u7ea7\u76ee\u5f55<\/span>\r\n            <span class=\"hljs-variable\">$path<\/span> = <span class=\"hljs-variable\">$dir<\/span> . <span class=\"hljs-string\">'\/'<\/span> . <span class=\"hljs-variable\">$file<\/span>; <span class=\"hljs-comment\">\/\/ \u6587\u4ef6\u6216\u5b50\u76ee\u5f55\u7684\u8def\u5f84<\/span>\r\n\r\n            <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-title function_ invoke__\">is_dir<\/span>(<span class=\"hljs-variable\">$path<\/span>)) { <span class=\"hljs-comment\">\/\/ \u5982\u679c\u662f\u76ee\u5f55\uff0c\u5219\u9012\u5f52\u904d\u5386\u5b50\u76ee\u5f55<\/span>\r\n                <span class=\"hljs-title function_ invoke__\">traverseDirectory<\/span>(<span class=\"hljs-variable\">$path<\/span>);\r\n            } <span class=\"hljs-keyword\">else<\/span> { <span class=\"hljs-comment\">\/\/ \u5982\u679c\u662f\u6587\u4ef6\uff0c\u5219\u8fdb\u884c\u76f8\u5e94\u7684\u5904\u7406<\/span>\r\n                <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$path<\/span> . PHP_EOL;\r\n                <span class=\"hljs-comment\">\/\/ \u5728\u6b64\u5904\u53ef\u4ee5\u5bf9\u6587\u4ef6\u8fdb\u884c\u64cd\u4f5c\uff0c\u5982\u8bfb\u53d6\u5185\u5bb9\u3001\u590d\u5236\u3001\u5220\u9664\u7b49<\/span>\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u8c03\u7528\u904d\u5386\u51fd\u6570<\/span>\r\n<span class=\"hljs-variable\">$directory<\/span> = <span class=\"hljs-string\">'path\/to\/directory'<\/span>; <span class=\"hljs-comment\">\/\/ \u8981\u904d\u5386\u7684\u76ee\u5f55\u8def\u5f84<\/span>\r\n<span class=\"hljs-title function_ invoke__\">traverseDirectory<\/span>(<span class=\"hljs-variable\">$directory<\/span>);\r\n<\/code><\/pre>\n<p>In the example above, the traverseDirectory() function takes a directory path as a parameter and uses the scandir() function to get the names of all files and subdirectories in that directory. Then, it loops through the returned array, and performs appropriate actions based on whether the element is a file or a directory. If it is a directory, it recursively calls itself; if it is a file, it performs the necessary operation.<\/p>\n<p>Please modify the directory path and file processing code according to actual needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To traverse directories and files, you can utilize PHP&#8217;s scandir() function and recursive method. Firstly, use the scandir() function to retrieve the names of all files and subdirectories in a directory. Then, iterate through the returned array using a loop and check if each element is a file or a directory. If it is a [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[453,1402,299,1404,1403],"class_list":["post-15093","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to traverse directories and files in PHP? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to traverse directories and files in PHP?\" \/>\n<meta property=\"og:description\" content=\"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T10:31:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T15:41:36+00:00\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivia Parker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"How to traverse directories and files in PHP?\",\"datePublished\":\"2024-03-15T10:31:25+00:00\",\"dateModified\":\"2025-08-06T15:41:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\"},\"wordCount\":176,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\",\"name\":\"How to traverse directories and files in PHP? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T10:31:25+00:00\",\"dateModified\":\"2025-08-06T15:41:36+00:00\",\"description\":\"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to traverse directories and files in PHP?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to traverse directories and files in PHP? - Blog - Silicon Cloud","description":"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/","og_locale":"en_US","og_type":"article","og_title":"How to traverse directories and files in PHP?","og_description":"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T10:31:25+00:00","article_modified_time":"2025-08-06T15:41:36+00:00","author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"How to traverse directories and files in PHP?","datePublished":"2024-03-15T10:31:25+00:00","dateModified":"2025-08-06T15:41:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/"},"wordCount":176,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/","name":"How to traverse directories and files in PHP? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T10:31:25+00:00","dateModified":"2025-08-06T15:41:36+00:00","description":"Learn about how to traverse directories and files in php?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-traverse-directories-and-files-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to traverse directories and files in PHP?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=15093"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15093\/revisions"}],"predecessor-version":[{"id":48540,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/15093\/revisions\/48540"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=15093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=15093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=15093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}