例如:
$sql = <<<MySQL_QUERY
它是使用 HEREDOC 语法。的字符串的开头
第三种分隔字符串的方法是 heredoc 语法: < < < 。 在这个操作符之后,提供一个标识符,然后是换行符。字符串本身紧随其后,然后再次使用相同的标识符来结束引号。
第三种分隔字符串的方法是 heredoc 语法: < < < 。
在这个操作符之后,提供一个标识符,然后是换行符。字符串本身紧随其后,然后再次使用相同的标识符来结束引号。
是 PHP 的 heredoc。
heredoc
$sql = <<<MySQL_QUERY SELECT * FROM TAB WHERE A = 1 AND B = 2 MySQL_QUERY;
是 Heredoc 语法。
$str = <<<EOD Example of string spanning multiple lines using heredoc syntax. EOD;
这是 Heredoc 的语法。您可以通过将 <<<加上您选择的令牌来启动一个 herdoc 字符串,并通过只放置令牌(没有其他内容!)来终止它一条新线路。为了方便起见,有一个例外: 您可以在结束分隔符之后添加一个分号。
<<<
echo <<<HEREDOC This is a heredoc string. Newlines and everything else is preserved. HEREDOC;
这就是所谓的 Herdoc,它让您做一个长的文本,超过几行。您可以将 PHP 变量放入其中,它们将被替换为。图表这个词可以是任何东西。只需要在引用文本开始的地方开始和结束就可以了。
您可以通过附加多个带引号的字符串来做同样的事情,但是对于像这样的 HTML 文本这样的扩展文档来说,这在大多数情况下是比较干净的。还有一个类似于 PHP 中单引号字符串的 现在,博士,但它不允许在其中使用变量。
这是一个 Heredoc,对于长字符串,您不必担心引号和诸如此类的东西。如果您注意到单词 CHART,然后有一行表示 CHART; ,表示字符串的结束。
在使用这种格式时,需要记住的重要一点是,无论你使用什么字符串来定义字符串的结尾(比如本例中的 CHART) ,这个单词必须单独出现在一行中,后面跟一个分号,并且在同一行的分号后面不能出现任何字符,即使是空格,否则 PHP 会认为它是字符串的一部分。
为了得到一个明确的想法:
$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(),这需要一些处理。相反,我们可以使用 <<<操作符来节省一些时间并获得一些干净的代码。:)
json_encode()
我发现 Heredoc和 Nowdoc在 PHP中都非常强大和有用,我很惊讶到目前为止还没有人给出更多的例子来说明你能做什么。
Heredoc
Nowdoc
PHP
首先,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个 echo 输出
<?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 ?>