Board logo

標題: 5-3 資料輸出(5-3-1 echo()函數) [打印本頁]

作者: 小誌    時間: 2011-4-19 09:29     標題: 5-3 資料輸出(5-3-1 echo()函數)

5-3   資料輸出
在前面章節中,要輸出資料到網頁畫面中,筆者使用了echo()函數,可是筆者又使用了很多不同的格式,您可能弄得一團霧水,所以本章節將說明一下,又,除了echo()函數可輸出資料到網頁畫面中外,還有幾個函數也有資料輸出的功能,這些函數我們也要認識一下。



5-3-1   echo()函數
echo()函數負責將字串資訊輸出至使用者端,也可與HTML標示混合使用,標準格式如下:
標準echo()函數格式
  1. echo ( string arg1 [, string argn...]);
複製代碼
例如:
  1. <?
  2. echo (“這是由PHP輸出的文字”);
  3. ?>
複製代碼
看到了吧!標準的echo()函數用法是將字串內容用一組括號包起來,而要輸出的字串再用一對雙引號括起來,因為echo()函數是用來輸出字串資料的。
作者: 小誌    時間: 2011-4-19 09:30

好累喔!又是括號又是雙引號的,嫌麻煩ㄚ,那好,我們把最外面的括號拿掉,這樣也行:
  1. <?
  2. echo “這是由PHP輸出的文字”;
  3. ?>
複製代碼
可是,我有特定的變數值要跟字串一起輸出耶!沒關係!我們用「.」小黑點把它連起來,「.」小黑點前後要加空格(space)喔!您不用擔心這個空格,echo()函數在輸出資料時會忽略掉這些空格:
  1. <?
  2. $x="PHP";
  3. echo "這是由" . $x . "輸出的文字";
  4. ?>
複製代碼
您又嫌麻煩了喔!沒關係!把「.」小黑點拿掉吧!將變數跟字串全部放在雙引號中就好:
  1. <?
  2. $x="PHP";
  3. echo "這是由$x 輸出的文字";
  4. ?>
複製代碼
在上例中,變數的$字元前可以不加空格,但是變數名稱後要加個空格,不然PHP會把「$x輸出的文字」當成是一個變數,而造成程式錯誤,不過,這個空格echo()函數在輸出資料時不會忽略掉,會拔它當成是字串的內容。
那我要同時印出變數名稱跟變數值時該如何做?要印出變數名稱則必須於變數的「$」之前加上反斜線「\」,原因在於「$」為一個脫逸字元,用來識別變數:
  1. <?
  2. $x="PHP";
  3. echo " $x ";   //印出變數值”PHP”
  4. echo " \$x ";  //印出變數名稱”$x”
  5. ?>
複製代碼
若要將HTML標籤加入echo()函數的輸出資料時,因為HTML標籤的屬性設定值多會以雙引號括起來,而這個雙引號又是PHP的脫逸字元之一,所以,千萬別忘了在「”」之前加上反斜線「\」:
ex05_07.php
  1. <html>
  2. <head>
  3. <title>ex05_07</title>
  4. </head>
  5. <body>
  6. 大家來學PHP
  7. <hr>
  8. 今天是:
  9. <?echo "<font color=\"#FF0000\">" . date("Y年m月j日");?>
  10. </body>
  11. </html>
複製代碼
上例執行結果如上圖5-15所示,我們可以很清楚的看到PHP網頁執行後的畫面,我們利用『echo()』方法輸出了一個日期資料,而這個這個日期字串我們還加上了HTML標籤「<font color="#FF0000">」來設定它的文字顏色,問題是標籤內使用了雙引號,在「”」之前加上再加上反斜線「\」。
[attach]5520[/attach]
圖5-15  範例ex05_07.php。
作者: 小誌    時間: 2011-4-19 09:31

如果我喜歡將不會變動的網頁資料也利用echo()函數來編寫,可不可以呢?當然也可以!但是,這樣就變成編寫一支完整的PHP程式了,所以全部的敘述都必須放在 『<? 』與『?>』之中,同時,所有的HTML標籤都必須寫在雙引號 『 " 』之中:
ex05_08.php
  1. <?
  2. echo "<html>";
  3. echo "<head>";
  4. echo "<title>ex05_08</title>";
  5. echo "</head>";
  6. echo "<body>";
  7. echo "大家來學PHP";
  8. echo "<hr>";
  9. echo "今天是:";
  10. echo "<font color=\"#FF0000\">" . date("Y年m月j日");
  11. echo "</body>";
  12. echo "</html>";
  13. ?>
複製代碼
上兩個範例的寫法,其結果是相同的,筆者個人比較喜歡第一種HTML標籤資料混合寫的方式,至少不用打那麼多字,不過,有前輩指出,HTML標籤資料混合寫的方式在執行效率上較差,因為系統會在HTML解析與PHP Engine持續切換,如何在開發時間與系統執行效率間取捨就看您囉!
作者: 小誌    時間: 2011-4-19 09:32

簡化echo()函數敘述
在前面幾個章節,筆者都沒有使用簡化的輸出敘述,它的用法類似ASP的「<%=XXX%>」敘述寫法,例如:
  1. <?echo date("Y年m月j日");?>
  2. <?=date("Y年m月j日")?>
複製代碼
上例的兩行程式敘述執行結果都是一樣地,後者似乎比較簡明對吧!但是,簡化的「<?=XXX?>」 敘述只能在單行敘述能用喔!在敘述區塊中是不能用的,例如下例:
  1. <?
  2. echo "大家來學PHP";
  3. echo "<hr>";
  4. ="今天是:"
  5. echo "<font color=\"#FF0000\">" . date("Y年m月j日");
  6. ?>
複製代碼
如果將「="今天是:"」這行敘述獨立用一組「<? ?>」括起來就可以了:
  1. <?
  2. echo "大家來學PHP";
  3. echo "<hr>";
  4. ?>
  5. <?="今天是:"?>
  6. <?
  7. echo "<font color=\"#FF0000\">" . date("Y年m月j日");
  8. ?>
複製代碼
哈!這樣好像有點畫蛇添足!筆者建議:在程式區塊中作輸出就使用完整的echo()函數敘述,若是在與HTML標籤資料混合的場合才使用「<?=XXX?>」的敘述寫法。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)