搜索
熱搜: 活動 交友 discuz
查看: 1338|回復: 0
打印 上一主題 下一主題

《PHP》『PHP4新增的部份語法』

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-9-6 14:41:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前言
目前使用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 ARE NICE\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 in foolib.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( )。

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2024-4-29 16:31 , Processed in 0.022374 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表