導航:首頁 > 編程語言 > php筆試答題技巧

php筆試答題技巧

發布時間:2025-03-25 08:20:04

php中的heredoc和nowdoc的區別是什麼

一、heredoc結構及用法

Heredoc 結構就象是沒有使用雙引號的雙引號字元串,這就是說在 heredoc 結構中單引號不用被轉義。其結構中的變數將被替換,但在 heredoc 結構中含有復雜的變數時要格外小心。其對格式化輸出內容時,比較有用 。具體其有以下特點:
1、開始標記和結束標記使用相同的字元串,通常以大寫字母來寫。
2、開始標記後不能出現空格或多餘的字元。
3、結束標記必須頂頭寫,不能有縮進和空格,且在結束標記末尾要有分號 。
4、位於開始標記和結束標記之間的變數可以被正常解析,但是函數則不可以。在heredoc中,變數不需要用連接符.或,來拼接 。
如:

function outputhtml()
{
//自 PHP 5.3.0 起還可以在 Heredoc 結構中用雙引號來聲明標識符,所以開頭這句也可以寫為echo <<<"EOT"
echo <<<EOT
<html>
<head><title>主頁</title></head>
<body>主頁內容</body>
</html>
EOT;
}
outputhtml();

這里,就不用像普通的php寫法那樣,echo "<html>" echo "<head>……" ,這樣不但看上去舒服易讀,而且也省去了每行雙引號的引用。
再給出一個變數引用的例子:

<?php
$name = '361way運維之路';
print <<<EOT
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
</head>
<body>
<!--12321-->
Hello,$name!
</body>
</html>
EOT;
?>

二、nowdoc結構及用法

在 PHP 5.3.0 及其以後的版本中增加了nowdoc結構,其用法和heredoc相同,不同的是Nowdoc 結構是類似於單引號字元串的。nowdoc 中不進行解析操作。這種結構很適合用於嵌入 PHP 代碼或其它大段文本而無需對其中的特殊字元進行轉義。與 SGML 的 結構是用來聲明大段的不用解析的文本類似,nowdoc 結構也有相同的特徵。
一個 nowdoc 結構也用和 heredocs 結構一樣的標記 <<<, 但是跟在後面的標識符要用單引號括起來,即 <<<'EOT'。
例如:now結構中復雜變理的示例

<?php
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
/* 含有變數的更復雜的示例 */
class foo
{
public $foo;
public $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MyName';
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': x41
EOT;
?>

其輸出為:
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': x41

具體可以和heredoc中的作下比較,在heredoc中,變數會被正常解析。x41也會被解析也A 。

三、其他

在使用heredoc和nowdoc時,經常會遇到如下報錯:

Parse error: syntax error, unexpected T_SL in php

一段遇到該問題的原因是定界符之後空格的問題引起的。如上例中的EOT後面有空格就會報這個錯。處理是否有空格還有一個小技巧。以vim為例,語法正確時,開始和結尾處的EOF會高亮顯示。不高亮時,則證明語法有問題。

閱讀全文

與php筆試答題技巧相關的資料

熱點內容
內存卡新建文件夾怎麼刪除 瀏覽:50
收拾家務的解壓游戲 瀏覽:262
女程序員能有生育能力 瀏覽:697
解壓包子蘇州超市 瀏覽:452
壓縮機緩沖設計 瀏覽:32
劍豪更換伺服器怎麼設置 瀏覽:410
外國交友軟體app在哪裡下載 瀏覽:378
蕪湖軌道app在哪裡下載 瀏覽:128
域名加密html 瀏覽:489
如何設置windows遠程連接到伺服器 瀏覽:8
安卓常見開源框架源碼分析 瀏覽:944
舊iphone如何簡單下app 瀏覽:220
雲伺服器全網最低價 瀏覽:56
戴爾伺服器怎麼查看內存槽位 瀏覽:621
空調壓縮機工作電流 瀏覽:421
c語言編程小項目 瀏覽:475
阿里雲mc伺服器mcbbs 瀏覽:850
安卓平板打不了字怎麼辦 瀏覽:514
linux用戶提示符 瀏覽:33
編譯卸載工具app 瀏覽:214