php 中單雙引號 花括弧詳解

來源:互聯網
上載者:User
php總結

基礎知識總結 一: 關於php中單引號 雙引號 花括弧 問題總結
在php 中 字串可以用 單引號 也可以用雙引號 引起來表示,輸出等。
例如:

Php代碼

<?php        echo  "aabbcc";           echo 'aabbcc';  ?>

他們的輸出是一樣的。都會列印出 aabbcc
但是 如果將aabbcc 賦值給一個變數,那麼它又該如何輸出呢?

Php代碼

<?php   $a = "aabbcc";//或者$a='aabbcc';  echo $a;  echo "$a"; //在這裡你會發現 他們的輸出都是 aabbcc  //如果是輸出並且斷行符號呢  echo $a."\n";  echo "$a\n";   //這兩種方式都是可以的。輸出都是aabbcc  為什麼呢,    ?>

是因為“”雙引號 在php中有解釋的功能,它會去解釋這個字串 如果字串中有變數或者逸出字元 它會一併解釋了 在進行輸出 。而單引號沒有解釋功能,也就是說,當你 echo ‘$a’; 或者echo '\n'; 它只會當作字串輸出 $a \n 並不會輸出你所想要的解釋好的變數或者轉移字元。
什麼是解釋功能? 其實這僅僅是,如果你用雙引號輸出字串的時候,系統會去正則的匹配$符號,從而識別變數。逸出字元也是。。。
針對上面轉義那一塊的情況還有一種情況。我們分別輸出 ‘ 單引號 和 雙引號 “

Php代碼

echo '\'';  echo "'"; //雙引號括住單引號,避免了再去用\ 轉義    echo "\"";  echo '"';  //針對雙引號,單引號有了避免了轉義的操作。

所以,通過上面的解釋,我們就可以認定為,當我們只是輸出字串的時候,不存在需要解釋的東西的時候,我們應該直接用 ‘’ 單引號 這樣可以省略一個解釋的過程, 在運行速度上雖然看不到明顯的提升,但是原理上運行效率是高於用雙引號的。 當我們輸出的內容需要解釋時,我們可以用“” 雙引號。 例如 echo "aaaaa$a"; 輸出為 aaaaaaabbcc
在這裡發生了一個問題。 請看代碼

Php代碼

$res = 'xxx';    //第一步  echo "aaa$resbbbb"; //第二步  //這樣,php在解析過程中,會當作$resbbbb 是一個變數,自然就會報錯,  //如何規避這樣的情況呢。  echo “aaa{$res}bbbb”; //第三步

第二步 筆者其實是想要 變數 $res。但是擷取到的是$resbbbb ,
因為zend解析的時候用的是正則匹配。並不知道你只想要res 。正則識別的是變數,只要是變數的字元(_字元數字,並且不是數字開頭),那麼系統正則就會一直匹配。如果有空格 那麼變數識別自然到此為止。$ 和 空格 之間的就是變數名。(當然這裡的空格 只要不是變數命名規範的字元就行)
echo “aaa$res bbbb”; 這句話就會運行正常,只不過輸出的字串中多了一個空格。
筆者 不想要 多餘的這個空格呢?
那麼就用第三步的代碼 echo "aaa{$res}bbbb";
這樣寫,zend解析的時候,同樣是正則找到兩個花括弧。 {}中的字元會再此使用正常雙引號的正則匹配。 從而直接找到$res . 而花括弧不會輸出
假如說 花括弧中是{aaa $res} 呢?即: echo "aaa{ggg $res}bbbb"; 也就是 花括弧中不僅僅只有變數 或者 不是變數。
這個時候,系統會重新判斷將整個字串用雙引號的正則去解析尋找變數。此時,res 後面的 “}” 不屬於變數命名。
所以 上面的輸出 將會是: aaa{ggg xxx}bbbb
總結: 當字串和變數拼接輸出的時候。 運行效率較高的是 {} 括住變數。當然{}中不要有非變數,不然將會比 用 “” 直接引起來慢。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.