PHP句法規則詳解
簡單句法規則(用花括號界定變數名,適用於PHP所有版本):
$a = 'flower'; echo "She received some $as"; // 无效;字母s会被当成有效的变量名组成元素,但是这里的变量是$a echo "She received some ${a}s"; // 有效 echo "She received some {$a}s"; // 有效;推荐的使用方法
我們希望表達的是」她收到一些花“,語境中的flower應該採用複數形式(也應該採用複數形式(也應該是就是說應該在後面加上S),但是如果不對變數做任何界定的話,就會出現第一個echo的情況。顯然我們希望輸出的是$a而不是$as。那我們通常是怎麼來處理這個輸出的呢?
echo "She received some $a"."s"; echo "She received some ".$a."s";
這兩種習慣性的寫法應該沒有加花括號的寫法簡潔明了吧?
注意:不管{是出現在$前面還是後面,只有兩者緊挨著時花括號才會被當成是界定符號。不要在之間加空格,要不然就會被當作普通的花括號處理
echo "She received some { $a}s"; // 输出的结果为:She received some { flower}s
2.複雜句法規則(用花括號界定表達式等,使用與PHP4+):
echo "有效的写法: {$arr[4][3]}"; // 有效;界定多维数组 echo "有效的写法: {$arr['foo'][3]}"; // 有效;当在字符串中使用多维数组时,一定要用括号将它括起来 echo "有效的写法: {$this->width}00"; // 有效;如果不界定的话,就会变成 $this->width00 echo "有效的写法: {$this->value[3]->name}"; // 有效;该例演示了界定链式调用 echo "有效的写法: $name: {${$name}}"; // 有效;该例演示的效果实际上是一个可变变量 echo "有效的写法: {${getName()}}"; // 有效;该例演示了将函数的返回值作为变量名 echo "有效的下发: {${$this->getName()}}"; // 有效;该例演示了将函数的返回值作为变量名 注意1:echo "这样写有效吗: {getName()}";输出结果为:'这样写有效吗: {getName()}'。因为里面不含$,所以花括号不会被当作界定符 注意2:echo "这样写有效吗:{$arr[foo][3]}"; 在回答这个问题前我们先来进行一个实验: error_reporting(E_ALL); $arr = array('a', 'b', 'c', 'd'=>'e'); echo "This is $arr[d]"; // 我们发现这样写是没有问题的,那么我们像下面这样写呢? echo $arr[d];
產生了這樣的錯誤:
Notice: Use of undefined constant d - assumed 'd'
注意:採用了未定義的常數d,可能應該為'd'
那麼如果我們像下面這樣修改一下代碼的話
error_reporting(E_ALL); $arr = array('a', 'b', 'c', 'd'=>'e'); define('f', 'd'); echo $arr[f];
我們發現這次沒有問題了。可以看出在字串中陣列的索引不加單引號是沒有問題的,但是如果這種寫法不是出現在字串當中就會報錯,而對於字串中{$arr[foo][3]}的解析就是按照非字串的方式解析的。所以說在字串當中對陣列只加花括號界定而不對索引加單引號的寫法是錯誤的。因為程式會把不加單引號的索引當作是常數來解析,這就產生了錯誤。正確的寫法應該是:
echo "有效的寫法: {$arr['foo'][3]}";
特別提醒一點:echo "This is $arr[d]";這種寫法雖然能夠被程序解析,但這也僅限於數組是一維數組的情況。嚴謹的寫法應該是:echo "This is {$arr['d']}";我的學生曾經在這一點上和我爭論過,他說:既然前面一種寫法能出結果,為什麼一定要用後面一種寫法呢?那麼,我們再繼續修改一下前面的程式碼
error_reporting(E_ALL); $arr = array('a', 'b', 'c', 'd'=>array('e'=>'f') ); echo "This is $arr[d][e]";
這樣還能夠被正確解析嗎?我只想告訴你,加花括號是嚴謹的必要的。當然,如果你不是我的學生那麼我管不了那麼多......
注意3:
error_reporting(E_ALL); $arr = array('a', 'b', 'c', 'd'); echo "This is {$arr[2]} <br />"; echo "This is {$arr['2']} <br />";
執行上面的程式碼。結果是一樣的,為什麼會這樣呢?我只能告訴你PHP是弱型語言,至於什麼叫弱型別語言我就不在這裡多說了。自己去Google一下吧。說了這麼多,那麼最能體現這些句法規則優勢的具體應用在什麼地方呢? ----SQL語句
Java程式碼
// 示例一: $SQL1 = "select * from table where id={$_GET['id']}"; // 示例二: $SQL2 = "select * from table where id={$this->id}";

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...
