四PHP和文件系統的維護 PHP中有許多與文件系統有關的函數
這些函數不僅可以打開文件
還可以顯示目錄中的內容
移動文件和其他一些功能
許多人甚至用PHP開發基於互聯網的文件資源管理器
關於文件路徑的解釋
在Windows中
可以在路徑中使用/和符號
而在其他的操作系統中只能使用/符號
出於一致性的緣故
我們統一使用/符號
下面的腳本樣例可以顯示一個目錄清單
注釋已經包含在代碼中
<? /*把要讀取的目錄的全路徑名存入一個名字為$dir_name的變量中
*/
$dir_name =
/home/me/
;
/* 創建一個句柄
其值是打開一個給定目錄的結果*/
$dir = opendir($dir_name);
/* 建立一個文字塊
用以放置列表元素(文件名字)*/
$file_list =
<ul>
;
/* 使用一個while語句
讀取已經打開的目錄中的所有元素
如果文件的名字不是
或
則顯示列表中的名字*/
while ($file_name = readdir($dir)) {
if (($file_name !=
) && ($file_name !=
)) {
$file_list
=
<li>$file_name
;
}
}
$file_list
=
</ul>
;
/*關閉打開的目錄
結束PHP模塊*/
closedir($dir);
?>
<!
Start your HTML
>
<HTML>
<HEAD>
<TITLE>Directory Listing</TITLE>
</HEAD>
<BODY>
<!
Use PHP to print the name of the directory you read
>
<P>Files in: <? echo
$dir_name
; ?></p>
<!
Use PHP to print the directory listing
>
<? echo
$file_list
; ?>
</BODY>
</HTML>
好了
我們已經得到了一個目錄清單
需要注意的是
要讀取一個文件(稍後我們將進行講解)或目錄的內容
PHP運行的系統上的用戶必須至少有讀取文件的權限
下面是一個如何拷貝文件的例子
<? /*把你要拷貝的原文件的全路徑賦給一個名字為$original的變量中
把拷貝的文件的全路徑賦予一個名字為$copied的變量中*/
$original =
/home/me/mydatabasedump
;
$copied =
/archive/mydatabasedumo_
;
/* 使用copy()函數拷貝原始文件
如果拷貝沒有完成則會顯示一個錯誤信息*/
@copy($original
$copied) or die(
Couldn
t copy file
);
?>
這個例子是一個文件備份系統的原型
在這段腳本運行時
它把文件拷貝到一個不同的位置進行保存
稍微修改一下守護程序
就可以在一天中你指定的時刻執行它
而無需用戶的干預
假定你在系統上安裝了Lynx
可以創建一個守護程序的條目訪問這個文件
訪問這個文件會運行這個腳本並建立一個拷貝文件
下面的例子將在上午
點鐘運行這個腳本
然後關閉Lynx
* * * [username] lynx
dump
>/dev/null
>&
如果運行的是CGI版本的PHP
可以跳過Lynx部分
而直接調用二進制文件
* * * [username] php /path/to/copyfile
php
>/dev/null
>&
五豐富的數組函數 PHP
中新添加了
個與組數有關的函數
其中一些常見的函數可以判斷一個數組中是否包含某個元素
對一個數組中的元素進行計數
添加或刪除數組中的元素或者對數組中的元素進行排序
如果有一個很大的數組
而你需要找出其中是否包含一個特定的元素
就可以使用in_array()
下面的例子將顯示
Not found in this array
因為在一個名字為$namesArray的數組中查找Albert
而在$namesArray數組中不存在這樣一個元素
<? $namesArray = array(
Joe
Jane
Bob
Mary
Paul
Eddie
John
);
$lookingFor =
Albert
;
if (in_array($lookingFor
$namesArray)) {
echo
You
ve found it!
;
} else {
echo
Not found in this array!
;
}
?>
如果把$lookingFor的值改為Mary
就會得到
You
ve found it!
的信息
因為Mary是$namesArray數組中的一個元素
如果要對一個數組中的元素個數進行計數
只要簡單地使用count()函數即可
<? $namesArray = array(
Joe
Jane
Bob
Mary
Paul
Eddie
John
);
$count = count($namesArray); ?>
返回的$count的值為
可以在一個數組的開頭或結尾處添加元素
還可以使用array_merge()來建立一個包含二個或更多數組中元素的新數組
合並時
元素的順序會按指定的順序排列
如果原來的數組是被排過序的
在合並後需要對它重新排序
我們可以首先利用array_push()在數組的結尾處添加一個元素
<? /* 建立一個數組 */
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/* 向數組中添加元素 */
array_push($fruitArray
grape
pineapple
tomato
);
/*顯示每個元素及其序號*/
while (list($key
$value) = each($fruitArray)) {
echo
$key : $value<br>
;
}
?>
運行上面的程序將得到下面的結果
: apple
: orange
: banana
: kiwi
: pear
: grape
: pineapple
: tomato
如果需要在數組的開頭添加元素
其代碼與上面的代碼差不多
唯一的不同之處是需要用array_unshift()代替array_push()
<?
/* 建立一個數組*/
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/* 向數組中添加元素*/
array_unshift($fruitArray
grape
pineapple
tomato
);
/* 顯示每個元素及其序號*/
while (list($key
$value) = each($fruitArray)) {
echo
$key : $value<br>
;
}
?>
運行上面的程序將得到下面的結果
: grape
: pineapple
: tomato
: apple
: orange
: banana
: kiwi
: pear
array_merge()函數可以把二個或更多的數組合並為一個數組
<? /*建立第一個數組*/
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/*/建立第二個數組*/
$vegArray = array(
carrot
green beans
asparagus
artichoke
corn
);
/*把這二個數組合並為一個數組*/
$goodfoodArray = array_merge($fruitArray
$vegArray);
/* 顯示每個元素及其序號*/
while (list($key
$value) = each($goodfoodArray)) {
echo
$key : $value<br>
;
}
?>
運行上面的腳本將得到下面的結果
: apple
: orange
: banana
: kiwi
: pear
: carrot
: green beans
: asparagus
: artichoke
: corn
現在我們已經掌握了如何添加元素和合並數組
我們再來看看如何從一個數組中刪除元素
從一個數組的末尾刪除一個元素可以使用array_pop()函數
使用array_shift()函數可以從一個數組的開頭刪除一個元素
盡管使用array_pop()或 array_shift()從數組中刪除了一個元素
你還可以把這個元素當作一個變量來使用
使用array_pop()從一個數組的末尾刪除一個元素
<?
/*建立一個數組*/
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/* 從數組的末尾刪除一個元素*/
$popped = array_pop($fruitArray);
/* 顯示刪除後數組的內容和你刪除的元素*/
while (list($key
$value) = each($fruitArray)) {
echo
$key : $value<br>
;
}
echo
<br>and finally
in $popped: $popped
;
?>
運行上面的腳本會得到下面的結果
: apple
: orange
: banana
: kiwi
and finally
in $popped: pear
我們再來討論一個從一個數組的末尾刪除元素的例子
<?
/* 建立一個數組*/
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/*從一個數組的開始刪除一個元素*/
$shifted = array_shift($fruitArray);
/* 顯示刪除後數組的內容和你刪除的元素*/
while (list($key
$value) = each($fruitArray)) {
echo
$key : $value<br>
;
}
echo
<br>and finally
in $shifted: $shifted
;
?>
運行上述腳本會得到如下的顯示結果
: orange
: banana
: kiwi
: pear
and finally
in $shifted: apple
另外還有幾個函數可以對數組中的元素進行排序
但在這裡我們將只簡要介紹基本的排序函數
說明排序的過程
<? /*建立一個數組*/
$fruitArray = array(
apple
orange
banana
kiwi
pear
);
/* 對數組進行排序*/
sort($fruitArray);
/*顯示每個元素及其序號*/
while (list($key
$value) = each($fruitArray)) {
echo
$key : $value<br>
;<
From:http://tw.wingwit.com/Article/program/PHP/201311/20800.html