亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 97215 | 回復(fù): 4
打印 上一主題 下一主題

PHP句法規(guī)則詳解 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-03-19 21:51 |只看該作者 |倒序瀏覽
PHP句法規(guī)則詳解









  1.簡單句法規(guī)則(用花括號界定變量名,適用于PHP所有版本):  $a = 'flower';  echo "She received some $as";  // 無效;字母s會被當成有效的變量名組成元素,但是這里的變量是$a  ec...       1.簡單句法規(guī)則(用花括號界定變量名,適用于PHP所有版本):

  $a = 'flower';

  echo "She received some $as";

  // 無效;字母s會被當成有效的變量名組成元素,但是這里的變量是$a

  echo "She received some ${a}s"; // 有效

  echo "She received some {$a}s"; // 有效;推薦的使用方法

  我們希望表達的是”她收到一些花“,語境中的flower應(yīng)該采用復(fù)數(shù)形式(也就是說應(yīng)該在后面加上S),但是如果不對變量做任何界定的話,就會出現(xiàn)第一個echo的情況。顯然我們希望輸出的是$a而不是$as。那么我們通常是怎么來處理這個輸出的呢?

  echo "She received some $a"."s";

  echo "She received some ".$a."s";

  // 這兩種習慣性的寫法應(yīng)該沒有加花括號的寫法簡潔明了吧?

  注意:不管{是出現(xiàn)在$前面還是后面,只有兩者緊挨著時花括號才會被當成是界定符號。不要在之間加空格,要不然就會被當作普通的花括號處理

  echo "She received some { $a}s";

  // 輸出的結(jié)果為:She received some { flower}s

  2.復(fù)雜句法規(guī)則(用花括號界定表達式等,使用與PHP4+):

  echo "有效的寫法: {$arr[4][3]}";

  // 有效;界定多維數(shù)組

  echo "有效的寫法: {$arr['foo'][3]}";

  // 有效;當在字符串中使用多維數(shù)組時,一定要用括號將它括起來

  echo "有效的寫法: {$this->width}00";

  // 有效;如果不界定的話,就會變成 $this->width00

  echo "有效的寫法: {$this->value[3]->name}";

  // 有效;該例演示了界定鏈式調(diào)用

  echo "有效的寫法: $name: {${$name}}";

  // 有效;該例演示的效果實際上是一個可變變量

  echo "有效的寫法: {${getName()}}";

  // 有效;該例演示了將函數(shù)的返回值作為變量名

  echo "有效的下發(fā): {${$this->getName()}}";

  // 有效;該例演示了將函數(shù)的返回值作為變量名

  注意1:echo "這樣寫有效嗎: {getName()}";輸出結(jié)果為:'這樣寫有效嗎:

  {getName()}'。因為里面不含$,所以花括號不會被當作界定符

  注意2:echo "這樣寫有效嗎:{$arr[foo][3]}"; 在回答這個問題前我們先來進行一個實驗:
  1.   error_reporting(E_ALL);

  2.   $arr = array('a', 'b', 'c', 'd'=>'e');

  3.   echo "This is $arr[d]";

  4.   // 我們發(fā)現(xiàn)這樣寫是沒有問題的,那么我們像下面這樣寫呢?

  5.   echo $arr[d];
復(fù)制代碼
產(chǎn)生了這樣的錯誤:

  1.   Notice: Use of undefined constant d - assumed 'd'
復(fù)制代碼
注意:采用了未定義的常量d,可能應(yīng)該為'd'

  那么如果我們像下面這樣修改一下代碼的話
  1.   error_reporting(E_ALL);

  2.   $arr = array('a', 'b', 'c', 'd'=>'e');

  3.   define('f', 'd');

  4.   echo $arr[f];
復(fù)制代碼
我們發(fā)現(xiàn)這次沒有問題了?梢钥闯鲈谧址袛(shù)組的索引不加單引號是沒有問題的,但是如果這種寫法不是出現(xiàn)在字符串當中就會報錯,而對于字符串中{$arr[foo][3]}的解析就是按照非字符串的方式解析的。所以說在字符串當中對數(shù)組只加花括號界定而不對索引加單引號的寫法是錯誤的。因為程序會把不加單引號的索引當作是常量來進行解析,這就產(chǎn)生了錯誤。正確的寫法應(yīng)該是:

  echo "有效的寫法: {$arr['foo'][3]}";

  特別提醒一點:echo "This is $arr[d]";這種寫法雖然能夠被程序解析,但這也僅限于數(shù)組是一維數(shù)組的情況。嚴謹?shù)膶懛☉?yīng)該是:echo "This is {$arr['d']}";我的學生曾經(jīng)在這一點上和我爭論過,他說:既然前面一種寫法能出結(jié)果,為什么一定要用后面一種寫法呢?那么,我們再繼續(xù)修改一下前面的代碼
  1. [code]  error_reporting(E_ALL);

  2.   $arr = array('a', 'b', 'c',

  3.   'd'=>array('e'=>'f')

  4.   );

  5.   echo "This is $arr[d][e]";
復(fù)制代碼
[/code]

  這樣還能夠被正確解析嗎?我只想告訴你,加花括號是嚴謹?shù)谋匾。當然,如果你不是我的學生那么我管不了那么多......

  注意3:
  1.  error_reporting(E_ALL);

  2.   $arr = array('a', 'b', 'c', 'd');

  3.   echo "This is {$arr[2]}

  4.   ";

  5.   echo "This is {$arr['2']}

  6.   ";
復(fù)制代碼
執(zhí)行上面的代碼。結(jié)果是一樣的,為什么會這樣呢?我只能告訴你PHP是弱類型語言,至于什么叫弱類型語言我就不在這里多說了。自己去Google一下吧。說了這么多,那么最能體現(xiàn)這些句法規(guī)則優(yōu)勢的具體應(yīng)用在什么地方呢?----SQL語句

  // 示例一:
  1.   $SQL1 = "select * from table where id={$_GET['id']}";
復(fù)制代碼
// 示例二:
  1.   $SQL2 = "select * from table where id={$this->id}";
復(fù)制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2012-03-19 21:51 |只看該作者
謝謝分享

論壇徽章:
0
3 [報告]
發(fā)表于 2015-08-19 17:35 |只看該作者
謝謝分享。

論壇徽章:
0
4 [報告]
發(fā)表于 2018-09-25 10:05 |只看該作者
有點界定,規(guī)則界定
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP