PHP 目錄 rewinddir() 函式



PHP 目錄 **rewinddir()** 函式將最近開啟的目錄控制代碼的位置重置到開頭,允許你再次讀取目錄內容。這個函式很有用,因為在使用 readdir() 讀取目錄內容後,如果不使用 **rewinddir()** 重置,就無法再次讀取該目錄。而且,可以多次使用 **rewinddir()**。

簡單來說,它會將 dir_handle 給定的目錄流重置到目錄的開頭。

語法

以下是 PHP 目錄 **rewinddir()** 函式的語法:

void rewinddir ( resource $dir_handle );

引數

以下是 **rewinddir()** 函式所需的 引數:

序號 引數及說明
1

dir_handle (必需)

先前使用 opendir() 開啟的目錄控制代碼資源。

返回值

返回 NULL,表示此函式不返回值。

PHP 版本

在 PHP 4的核心版本中引入,**rewinddir()** 函式與 PHP 5、PHP 7 和 PHP 8 相容良好。

示例

在這個 PHP 程式碼中,我們將開啟目錄並讀取第一個條目,然後使用 PHP 目錄 **rewinddir()** 函式回退並再次讀取第一個條目,最後關閉目錄。

<?php
   // try to open the directory
   $dir = opendir("/Applications/XAMPP/xamppfiles/htdocs/mac");

   // read the first entry
   readdir($dir); 

   // rewind to the beginning
   rewinddir($dir); 

   // read the first entry again
   echo "Read the first entry: ".readdir($dir); 

   // close the directory
   closedir($dir); 
?> 

輸出

這將產生以下結果:

Read the first entry: .

示例

現在我們將使用 **rewinddir()** 函式顯示當前工作目錄或我們給定路徑中存在的所有內容,並使用 while 迴圈遍歷其中的內容。

<?php
   // Try to open the directory
   $dir = opendir("/Applications/XAMPP/xamppfiles/htdocs/mac");

   echo "Items in my directory are- " . "<br>";
   while(false !== ($entry = readdir($dir))){
      echo "Item: " . $entry . "<br>";
   }
   rewinddir();
   echo "After rewinddir() function, items in my directory are- " . "<br>";
   while(false !== ($entry = readdir($dir))){
      echo "Item: " . $entry . "<br>";
   }
?> 

輸出

這段程式碼將產生以下結果:

Items in my directory are-
Item: .
Item: ..
Item: logo.gif
Item: .DS_Store
Item: index.php
Item: new dir
Item: images
Item: image.gif
Item: myfile.txt
Item: my.php
After rewinddir() function, items in my directory are-
Item: .
Item: ..
Item: logo.gif
Item: .DS_Store
Item: index.php
Item: new dir
Item: images
Item: image.gif
Item: myfile.txt
Item: my.php

示例

在下面的 PHP 程式碼中,我們將開啟目錄,使用 readdir() 列出其內容,使用 mkdir() 函式建立一個“Test”目錄,使用 **rewinddir()** 函式回退,然後再次列出內容。

<?php
   // Try to open the directory
   $directory = opendir("/Applications/XAMPP/xamppfiles/htdocs");

   echo "Contents of 'htdocs' directory are- "."<br>";
   while(false !== ($entry = readdir($directory))){
      echo $entry . "<br>";
   }
   mkdir("/Applications/XAMPP/xamppfiles/htdocs/Test");
   rewinddir($directory);
   echo "After rewinddir() function, Contents of 'htdocs' directory are- "."<br>";
   while(false !== ($entry = readdir($directory))){
      echo $entry . "<br>";
   }
?> 

輸出

這段程式碼將產生以下結果:

Contents of 'htdocs' directory are-
.
..
favicon.ico
.DS_Store
index.php
applications.html
webalizer
img
dashboard
mac
bitnami.css
After rewinddir() function, Contents of 'htdocs' directory are-
.
..
favicon.ico
.DS_Store
index.php
Test
applications.html
webalizer
img
dashboard
mac
bitnami.css

示例

現在我們將使用 opendir() 開啟並使用 readdir() 列出兩個目錄(“htdocs”和“mac”)的內容,使用 **rewinddir()** 回退“mac”目錄,然後再次列出兩個目錄的內容。

<?php
   // open the first directory
   $directory1 = opendir("/Applications/XAMPP/xamppfiles/htdocs");

   // open the second directory
   $directory2 = opendir("/Applications/XAMPP/xamppfiles/htdocs/mac");

   echo "Contents of 'htdocs' directory are- ";

   while(false !== ($entry = readdir($directory1))){
      echo $entry . "<br>";
   }

   echo "Contents of 'mac' directory are- ";

   while(false !== ($entry = readdir($directory2))){
      echo $entry . "<br>";
   }

   // rewind the second directory using rewinddir()
   rewinddir($directory2);

   echo "After rewinddir() function, Contents of 'mac' directory are- ";
   while(false !== ($entry = readdir($directory2))){
      echo $entry . "<br>";
   }

   echo "After rewinddir() function, Contents of 'htdocs' directory are- ";
   while(false !== ($entry = readdir($directory1))){
      echo $entry . "<br>";
   }
?> 

輸出

這段 PHP 程式碼的結果是:

Contents of 'htdocs' directory are- .
..
favicon.ico
.DS_Store
index.php
applications.html
webalizer
img
dashboard
mac
Contents of 'mac' directory are- .
..
logo.gif
.DS_Store
index.php
images
image.gif
myfile.txt
After rewinddir() function, Contents of 'mac' directory are- .
..
logo.gif
.DS_Store
index.php
images
image.gif
myfile.txt
After rewinddir() function, Contents of 'htdocs' directory are-

優勢

與使用 opendir() 函式讀取目錄內容相比,使用 **rewinddir()** 方法的優勢在於,opendir() 使用新的資源,而 **rewinddir()** 使用以前的資源。因此,**rewinddir()** 優化了資源利用率。

注意

如果沒有提供目錄控制代碼,**rewinddir()** 將重新開啟先前開啟的目錄。如果使用錯誤的控制代碼,將顯示錯誤訊息“未定義變數”。

總結

**rewinddir()** 函式是 PHP 內建的目錄函式。它通常有助於反覆讀取目錄的內容。這是一個非常簡單的函式。

php_function_reference.htm
廣告