茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1729937 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_0026.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

PHP特區 : [轉貼]PHP4新增的部份語法

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15773
[轉貼]PHP4新增的部份語法

PHP4新增的部份語法

作者 : 林義祥


  • 前言

目前使用PHP的人已經相當的多 ,而PHP也被大家廣泛的討論與應用,相信PHP必定會成為新一代的潮流。從之前我所學習的PHP3,發展到現在的PHP4,PHP4的速度不但加快了許多,而且也增加了蠻多的函式庫,功能真是愈來愈多啊!以下是我在看手冊時的新發現,至少是在別的站上所未曾見過的,而且書上也沒提到的,因此翻譯其中的部份內容來和各位同好們一起分享,也希望大家來信指教。以下的文章及範例皆取自 PHP官方網站

  • foreach

在 PHP4中 ,新增了一個迴圈 foreach,它很像是 perl和其它的語言,你可以給它一個陣列,讓它來取出陣列的值。它有下列這二個語法,第二個語法是較次要的,但是可用來作為第一個語法的延伸。

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

第一個形式的迴圈 ,它會在每個迴圈上,將目前元素的值分配給 $value,並且向後移動陣列的內部指標,所以在下一個迴圈的時候,你就會看到下一個元素了。

第二個形式的迴圈和第一個是相同的 ,不同的是它會在每個迴圈將目前元素的索引值分配給變數 $key。

注意 : 當 foreach第一次開始執行的時候 ,它會把陣列的內部指標重新設定到陣列的第一個元素,意思是說,在使用 foreach之前,你不必再去呼叫 reset( )。

注意 : foreach是運作在陣列的複製 ,而不是陣列它本身,因此並不會改變陣列指標

下面範例的功能都是相同的 :

<?php
reset ($arr);
while (list(, $value) = each ($arr)) {
	echo "Value: $value<br>\n";
}
foreach ($arr as $value) {
	echo "Value: $value<br>\n";
}
?>

下面範例的功能也都是相同的 :

<?php
reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value<br>\n";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br>\n";
}
?>

以下的範例將說明 foreach的用法 :

<?php
/* foreach example 1: value only */
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "Current value of \$a: $v.\n";
}
/* foreach example 2: value (with key printed for illustration) */
$a = array (1, 2, 3, 17);
$i = 0;
/* for illustrative purposes only */
foreach($a as $v) {
print "\$a[$i] => $k.\n";
}
/* foreach example 3: key and value */
$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}
?>

  • require_once( )

require_once( )以指定的檔案來取代它自己本身 ,這很像是C語言中的#include,而且和 require( )也很相似,最大的不同是require_once( )有個包含鏈(inclusion chain),require_once( )的使用將會保證檔案加入你的程式中只有一次,而且會避開與變數值或函式名稱之間的衝突。

為了要測試這個範例 ,請你建立二個檔案 utils.inc和 foolib.inc

檔案 utils.inc的內容 :

<?php
define(PHPVERSION,floor(phpversion()));
echo "GLOBALS ARENICE\n";
function goodTea() {
return "Oolong tea tastes good!";
}
?>

檔案 foolib.inc的內容 :

<?php
require ("utils.inc");
function showVar($var) {
if (PHPVERSION == 4) {
print_r($var);
}
else {
dump_var($var);
}
}
      // bunch of other functions ...
?>

然後建立一個檔名為cause_error_require.php的檔案 ,這個檔案的內容為 :

<?php
require("foolib.inc");
/* the following will
generate an error */
require("utils.inc");
$foo = array("1",array("complex","quaternion"));
echo "this is requiring
utils.inc again which is also\n";
echo "required infoolib.inc\n";
echo "Running goodTea:".goodTea()."\n";
echo "Printing foo: \n"; showVar($foo);
?>

然後當你試著去執行 cause_error_require.php的時候 ,輸出的結果會是 :

GLOBALS ARE NICE GLOBALS ARE NICE
Fatal error: Cannot redeclare causeerror( ) in utils.inc on line 5

現在我們來修改 foolib.inc和 cause_error_require.php這二個檔案 ,我們來使用 require_once( )來代替 require( ),並且將 cause_error_require.php這個檔案重新命名為avoid_cause_error_require_once.php。

檔案 foolib.inc修改的內容如下 :

...
require_once("utils.inc");
function showVar($var) {
...

檔案 avoid_cause_error_require_once.php修改完成後的部份內容如下 :

...
require_once("foolib.inc");
require_once("utils.inc");
					$foo = array("1",array("complex","quaternion"));
...

然後我們再執行 avoid_cause_error_require_once.php時 ,輸出的結果會是 :

GLOBALS ARE NICE
					this is requiring globals.inc again which is
also
required in foolib.inc
Running goodTea: Oolong tea tastes good!
Printing foo:
Array
(
      [0] => 1
      [1] => Array (
	  [0] => complex
	  [1] => quaternion
)
)

  • include_once( )

include_once( )在程式執行的期間 ,將指定的檔案給包含進來,這和 include( )很相似,而它們最大的不同處是,如果從檔案包含進來的程式碼先前已經有包含過的時候,include_once( )就不會再把它包含進來。

如果要在程式的執行期間包含相同的檔案一次以上 ,而且又要確定檔案有被包含進來時,便可以使用include_once( )。

前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|