1. 程式人生 > >php佇列方式和遞迴方式遍歷目錄檔案及子目錄

php佇列方式和遞迴方式遍歷目錄檔案及子目錄

如果目錄很多,推薦佇列方式,遞迴方式會慢,慢的原因:遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做地址儲存,引數傳遞等

  1. <?php  
  2. //遞迴方式
  3. function read_dir($dir){  
  4.     $files=array();  
  5.     $dir_list=scandir($dir);  
  6.     foreach($dir_listas$file){  
  7.         if($file!='..' && $file!='.'){  
  8.             if(is_dir($dir.'/'.$file
    )){  
  9.                 $files[]=read_dir($dir.'/'.$file);  
  10.             }else{  
  11.                 $files[]=$file;  
  12.             }  
  13.         }  
  14.     }  
  15.     return$files;  
  16. }  
  17. //佇列方式 
  18. function read_dir_queue($dir){  
  19.     $files=array();  
  20.     $queue=array($dir);  
  21.     while($data=each($queue
    )){  
  22.         $path=$data['value'];  
  23.         if(is_dir($path) && $handle=opendir($path)){  
  24.             while($file=readdir($handle)){  
  25.                 if($file=='.'||$file=='..'continue;  
  26.                 $files[] = $real_path=$path.'/'.$file;  
  27.                 if (is_dir($real_path
    )) $queue[] = $real_path;  
  28.             }  
  29.         }  
  30.         closedir($handle);  
  31.     }  
  32.      return$files;  
  33. }  
  34. print_r(read_dir_queue('D:/webroot/suanfa/dir'));exit;  
PHP遍歷某個目錄下的檔案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <?php $num=0;   //用來記錄目錄下的檔案個數 $dirname='LAMP';//要遍歷的目錄名字 $dir_handle=opendir($dirname); echo'<table border="1" align="center" width="960px" cellspacing="0" cellpadding="0">';

相關推薦

php佇列方式方式目錄檔案子目錄

如果目錄很多,推薦佇列方式,遞迴方式會慢,慢的原因:遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做地址儲存,引數傳遞等 <?php   //遞迴方式 function read_dir($dir){       $fil

perl 目錄下的檔案

#!/usr/bin/perl -w use strict; use File::Spec; local $\ ="\n";#當前模組的每行輸出加入換行符 my %options;

Python學習筆記之目錄檔案walk())

python中遍歷指定目錄下所有的檔案和資料夾,包含多級目錄,有兩種方法,一種是通過遞迴思想去遍歷,另一種是os模組的walk()函式 要列出目錄結構 一.遞迴方法 #coding:utf-8 import os a

二叉樹前序、中序、後序( / 非

前語  二叉樹的遍歷是指按一定次序訪問二叉樹中的每一個結點,且每個節點僅被訪問一次。 前序遍歷  若二叉樹非空,則進行以下次序的遍歷:   根節點—>根節點的左子樹—>根節點的右子樹   若要遍歷左子樹和右子樹,仍然需要按照以上次序進行,所以前序遍歷也是一個遞

Java實現斐波那契數列(、矩陣)

什麼是斐波那契數列 其實很簡單,可以理解為: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 比如這樣一個數列:1、1、2、3、5、8、13、21、34、…… 有興趣可以看百度百科 下面我們就來實現,給定一個n,求f(n)的值

java 單鏈表反轉

以下是一個例子 package com.haha.demo.util; public class node { static class Node { Integer data; Node next; } static Node readyNode() { Node

迴圈、、迭代的區別

表示“重複”這個含義的詞有很多, 比如迴圈(loop), 遞迴(recursion), 遍歷(traversal), 迭代(iterate). 迴圈算是最基礎的概念, 凡是重複執行一段程式碼, 都可以稱之為迴圈. 大部分的遞迴, 遍歷, 迭代, 都是迴圈. 遞迴是重複呼叫函

資料結構二叉樹三種非

#include <stdio.h> #include <malloc.h> #define MAX 30 typedef struct TiNode {char date;struct TiNode *lchild;struct TiNode *r

Node.js使用實現資料夾中所有檔案

https://blog.csdn.net/younglao/article/details/77046830?locationNum=8&fps=1 版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/y

二叉樹的非統一形式

核心思想是: 有交集的區域性有序會導致全域性有序!!! void preorderTraversalNew(TreeNode *root, vector<int> &path) { stack< pair<TreeNode *,

xml文件所有節點。

能遍歷出一個xml文件的所有的節點。 Module Module1     Sub Main()        Dim iReturn As Integer        Dim myXmlDocument As New XmlDocument        myXmlDoc

層次查二叉樹深度

#include<stdio.h> typedef struct BiTree{ int data; struct BiTree *lchild,*rchild; }Bi

Python歸實現目錄

遞歸 內容 imp join light sdi def 是否 tdi import os filePath = "/Users/busensei/wzy/filePath/" def read(filePath, n): it = os.listdir(f

C語言目錄檔案並排序

有時候需要遍歷目錄檔案,但是預設的函式並不支援指定排序的功能,現在介紹一種排序的遍歷目錄方式,預設按照檔名的數字進行排序 window版本 string split_pathexe(string szFullPath)//獲取檔名 {     char szPa

Python目錄檔案的兩種方法

方法一:遞迴法 1 2 3 4 5 6 7 8 import osdef displayDir2(dir):     for i in os.listdir(dir):         file = os.path.join(dir,i)         if

關於二叉樹的方式方式

首先來定義樹的節點: package test2018925.findTree; public class Node { public int value; public Node left; public Node right; public Node(int data){ this.va

PHP實現無限極分類的兩種方式引用

https://blog.csdn.net/falcom_fans/article/details/75579663 說到無限極分類,比較常見的做法是在建表的時候,增加一個PID欄位用來區別自己所屬的分類   由於展示資料的時候,需要表達出這種所屬關係,所以必然要在讀取資料

3.1分別用方式實現二叉樹先序、中序後序

題目 用遞迴和非遞迴方式,分別按照二叉樹先序、中序和後序列印所有的節點。 首先給出二叉樹節點結構定義: public class BinaryTreeNode { //二叉樹節點 private int data; private Bi

二叉樹三種方式迴圈實現

轉載自:http://blog.csdn.net/pi9nc/article/details/13008511 二叉樹是一種非常重要的資料結構,很多其他資料機構都是基於二叉樹的基礎演變過來的。二叉樹有前、中、後三種遍歷方式,因為樹的本身就是用遞迴定義的,因此採用遞迴的方

二叉樹(14)----由前序中序重建二叉樹,方式

相關連結: 1、二叉樹定義 typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeN