例如:
$sql = <<<MySQL_QUERY
这是heredoc语法。您可以通过放置一个您选择的标记来开始一个heredoc字符串<<<
,并通过仅将标记(而不是其他任何东西!)放在一个新行上来终止它。为方便起见,有一个例外:您可以在结束分隔符后添加一个分号。
例子:
echo <<<HEREDOC
This is a heredoc string.
Newlines and everything else is preserved.
HEREDOC;
第三种分隔字符串的方法是 heredoc 语法:<<<。
在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。
这是一个heredoc,对于长字符串,您不必担心引号之类的。如果您注意到单词 CHART,然后有一行显示 CHART;,则表示字符串的结尾。
使用这种格式时要记住的重要一点是,无论您使用什么字符串来定义字符串的结尾(例如本例中的 CHART),该单词都必须单独出现在一行上,后跟分号,并且否字符可以出现在同一行的分号之后,甚至是空格,否则 PHP 认为它是字符串的一部分。
这是heredoc 语法。
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
我发现两者都Heredoc
非常Nowdoc
强大和有用PHP
,我很惊讶到目前为止没有人给出更多的例子来说明你可以做什么。
Heredoc
首先和之间的区别Nowdoc
很简单,
Heredoc
: 就像 "" 双引号字符串你可以放变量Nowdoc
: 就像 '' 单引号字符串没有变量被解析对于以下示例,我将仅显示Heredoc
, 以便 Nowdoc
将标记包含在单引号内 -> 'TOKEN'。
简单示例
$a = "Hello";
$b = "World";
// HEREDOC
echo <<<HEREDOC
<strong> HEREDOC: </strong>
Variable A: "$a"
Variable B: "$b"
HEREDOC;
echo '</br>';
// NOWDOC
echo <<<'NOWDOC'
<strong> NOWDOC: </strong>
Variable A: "$a"
Variable B: "$b"
NOWDOC;
输出
HEREDOC: Variable A: "Hello" Variable B: "World"
NOWDOC: Variable A: "$a" Variable B: "$b"
<br>
为每一行添加这是有效的,因为 HEREDOC 将每个 \n 解释为实际行
// HEREDOC
echo nl2br(<<<HEREDOC
<strong> HEREDOC: </strong>
Variable A: "$a"
Variable B: "$b"
HEREDOC);
// Output HEREDOC:
//Variable A: "Hello"
//Variable B: "World"
创建小组件
<?php
foreach($tasks as $task) {
// Create an HTML like component
$component = <<<HEREDOC
<div class="pure-u-1-3">
<div class="card">
<div class="card-header">
{$task['name']}
</div>
<div class="card-body">
<h5 class="card-title"> {$task['state']} </h5>
<p class="card-text"> {$task['description']} </p>
<a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
</div>
</div>
</div>
HEREDOC;
echo $component; // Output
}
?>
或者只输入一个字符串,然后输出 1 个回显
<?php
$taskRendered = '';
foreach($tasks as $task) {
// Create an HTML like component
$component = <<<HEREDOC
<div class="pure-u-1-3">
<div class="card">
<div class="card-header">
{$task['name']}
</div>
<div class="card-body">
<h5 class="card-title"> {$task['state']} </h5>
<p class="card-text"> {$task['description']} </p>
<a href="view?model=todo_list&task_id={$task['id']}" class="btn btn-primary">See Task Todos</a>
</div>
</div>
</div>
HEREDOC;
$taskRendered .= $component;
}
echo $taskRendered; // Output
?>
为了得到一个清晰的想法:
$data = array(
"Id" => 12345,
"Cutomer" => "hi",
"Quantity" => 2,
"Price" => 45
);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
如果我们使用<<<
:
$data = <<<DATA
{
"Id": 12345,
"Customer": "John Smith",
"Quantity": 1,
"Price": 10.00
}
DATA;
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
结论:如果我们采用第一种方法,我们必须将其转换为json_encode()
某种需要一些处理的方法。相反,我们可以使用<<<
运算符来节省一些时间并获得一些干净的代码。:)