字串

PHP裡面的字串寫法一共有4種

  • 單引號'
  • 雙引號"
  • Heredoc
  • Nowdoc(PHP 5.3.0後支援)

單引號

以兩個單引號'包夾一段文字,表示字串內容

使用單引號的字串有一些特徵如下(與雙引號比較):

  • 單引號中的跳脫字元(Escape characters)只有兩種。
跳脫字元 說明
\' 單引號
\ 反斜線
  • 跳脫字元\\可省略寫作\,但不可為最後一個字元
  • 不會對字串中的變數進行解析。

跳脫字元是為了能輸入某些打不出來的字,而定義的一種輸入方式

舉例來說,這邊以單引號'當作字串的包夾符號,那麼想在字串中使用'怎麼辦呢?
所以定義了跳脫字元,讓字串中能使用\'表示單引號'

看一下範例囉

<?php
    echo '基本用法';                    //基本用法
    echo 'You can also have embedded 
    newlines in strings';             //You can also have embedded newlines in strings
    echo 'Eric\'s book.';             // Eric's book.
    echo 'C:\\TEST';                   // C:\TEST
    echo 'C:\TEST';                    // C:\TEST
    // 不能在最後省略,\'會被解析為字元而缺少結尾單引號
    //echo 'C:\PHP\'; // Parse error
    echo '這串字不會\n換行';            //這串字不會\n換行
    $text = 'hello';
    echo 'text is $text';             // text is $text
?>

在PHP中如果要輸出純文字字串,而且不需要經過轉換特殊字元的動作的話
由於單引號的效能比較好(不用判斷是否有變數要輸出),建議都使用單引號
'

雙引號

以兩個雙引號"包夾一段文字,表示字串內容

最主要的重點是,變數會在雙引號中被解析

在雙引號中使用變數的寫法有三種:

  • 直接使用:"$var"
  • 使用大括號(1):"${var}"
  • 使用大括號(2):"{$var}"

雙引號的逸出字元如下:

符號 說明
\n 換行字元(LF or 0x0A)。
\r 歸位字元(CR or 0x0D)。
\t 水平Tab字元(HT or 0x09)。
\v 垂直tab字元(VT or 0x0B, PHP 5.2.5之後加入)。
\f 跳頁字元(CR or 0x0C, PHP 5.2.5之後加入)。
\ 反斜線字元。
$ 錢號字元。
\" 雙引號字元。

一樣,看看範例~

<?php
    echo "\"You're a good man.\" she said.";  // "You're a good man." she said.
    echo "C:\\PHP";                             // C:\PHP
    echo "First line\nsecond line\nAthird line";
    // output:
    // First line
    // second line
    // third line
    $text = "hello";
    //直接使用變數
    echo "text is $text";                       // text is hello
    //使用大括號(1)
    echo "text is ${text}";                     // text is hello
    //使用大括號(2)
    echo "text is {$text}";                     // text is hello
    echo "text is \$text";                      // text is $text
?>

Heredoc

這種方式適用於字串內容很多的時候,其實作用跟雙引號差不多

最主要的差別是可以在Heredoc裡面自由地使用",不需要再加上反斜線\

Heredoc使用<<<符號開始,後面接著一個自訂的標籤,最後以自訂的標籤作結束,而結束的自訂標籤左邊不能有任何空白

<?php
$text="hello";
// 標籤之後不能有任何字元
$content=<<<EOT
    這個句子可以自由地使用"和'
    並且可以輸出變數$text
    也可以換行繼續打字
    要輸出錢號要這樣\$
EOT;
// 標籤之前與分號之後不能有任何字元
echo $content;

//output:這個句子可以自由地使用"和' 並且可以輸出變數hello 也可以換行繼續打字 要輸出錢號要這樣$
?>

Nowdoc

如果說heredoc是對應雙引號,那麼nowdoc就是對應單引號

Nowdoc使用<<<符號開始,後面接著一個使用單引號包夾的自訂標籤,最後以自訂的標籤作結束

Nowdoc無法使用逸出字元,也不會解析變數,也就是純文字的內容。

<?php
$text="hello";
// 標籤之後不能有任何字元
$content=<<<'EOT'
    這個句子可以自由地使用"和'
    並且可以輸出變數$text
    也可以換行繼續打字
    要輸出錢號要這樣\$
EOT;
// 標籤之前與分號之後不能有任何字元
echo $content;

//output:這個句子可以自由地使用"和' 並且可以輸出變數$text 也可以換行繼續打字 要輸出錢號要這樣\$
?>

PHP5.3.0之後,相對於Nowdoc的單引號,Heredoc同時新增了使用雙引號包夾的用法。

其他資料型別強制轉型成字串

在PHP內使用strval()(string)可以將其他型別強制轉型成字串

<?php
    $num = 12345;
    $string = strval($num); //使用函數強制轉型
    $string = (string)$num;

    //這邊強制轉型後$string內儲存的值是"12345"
?>

results matching ""

    No results matching ""