1. 程式人生 > >php中字串定義的三種方式

php中字串定義的三種方式


三種定義方式

  1. 單引號
  2. 雙引號
  3. 定界符<<<

單引號與雙引號的區別:

$name='張三';
echo $name;

輸出 張三

$name="張三";
echo $name;

輸出 張三

輸出結果一樣

區別:

$name='張三';
echo "我的姓名$name";//普通的字串+變數名

輸出 我的姓名:張三(輸出結果正常)

$name='張三';
echo '我的姓名$name';//普通的字串+變數名

輸出 我的姓名$name;

得出:輸出語句中,雙引號裡有變數名就會輸出變數名,但是單引號會原封不動的輸出變數名
注:在平常情況下雙引號和單引號是一樣的。
如果在echo中,輸出變數名一定要使用雙引號。

變數名在字串中的一些常見問題
如:

<?php
header('content-type:text/html;charset=utf-8');
$name = '張三';
$sex = '男';
$age = 20;
echo "我的姓名為:$name,性別為:$sex,年齡為:$age";

輸出 我的姓名為張三,性別為男,年齡為20

//如果輸出語句改為
echo "我的姓名為:$name性別為:$sex年齡為:$age";

n a m e

name和性別之間沒有空格,也沒有用符號作為分格,連線在了一起將會報錯,系統認為 name和性別是變數名

解決這種情況:使用變數時加一對{},在裡邊嵌入變數名,目的標示這是變數名

//結果如下
echo "我的姓名為:{$name},性別為:{$sex},年齡為:{$age}";
//也可以使用.連線變數為和字串結果一樣(根據自己喜歡連線變數和字串)
echo "我的姓名:".$name.",性別為".$sex.",年齡為:".$age;

定界符
我們平常都是這樣寫

$str='
<table border="1">
	<tr>
		<td width="50">1</td>
		<td>2</td>
	</tr>
	<tr>
		<td>3</td>
		<td>4</td>
	</tr>
	<tr>
		<td>5</td>
		<td>6</td>
	</tr>
</table>'
echo $str;

但是時刻都要注意’’,"",防止報錯

所以使用定界符的原因如下:

  1. php定界符的作用就是按照原樣,包括換格式什麼的,輸出在其內部的東西;
  2. 在php定界符中的任何特殊字元都不不需要轉義;
  3. php定界符中php變數會正常的用其值代替。
    注:一般情況下定界符解決字串過長
    也可以把變數名嵌入到裡邊
    也可以嵌入js

定界符格式

<<<EOF
......
EOF;

下面是使用定界符的例子:

$str= <<<eof
<table border="1">
	<tr>
		<td width="50">1</td>
		<td>2</td>
	</tr>
	<tr>
		<td>3</td>
		<td>4</td>
	</tr>
	<tr>
		<td>5</td>
		<td>6</td>
	</tr>
</table>
eof;
echo $str;

定界符裡也可以插入js

$name='張三';
$str = <<<STR
<script type="text/javascript">
    alert("{$name}你好");
</script>
STR;
echo $str;

輸出結果: 彈出 張三你好

定界符裡也可以插入變數

$a = 5;
$b = 7;
$str= <<<eof
<table border="1">
	<tr>
		<td width="50">1</td>
		<td>2</td>
	</tr>
	<tr>
		<td>{$a}</td>
		<td>{$b}</td>
	</tr>
	<tr>
		<td>5</td>
		<td>6</td>
	</tr>
</table>
eof;
echo $str;

使用定界符所注意的問題:
首先在<<<之後的字元EOF是自己定義的,隨便什麼都可以(AAA都可以),但是結尾處的字元一定要和它是成對出現的,就像{}這樣的。
其次,結尾一行,一定要另起一行,並且改行除了EOF;這個定界符結尾除標識之外不能有任何其他字元,前後都不能有,包括空格,如果在本行最前或者最後出現空格,將會收到錯誤資訊。