68

例如:

$sql = <<<MySQL_QUERY
4

8 回答 8

77

这是heredoc语法。您可以通过放置一个您选择的标记来开始一个heredoc字符串<<<,并通过仅将标记(而不是其他任何东西!)放在一个新行上来终止它。为方便起见,有一个例外:您可以在结束分隔符后添加一个分号。

例子:

echo <<<HEREDOC
This is a heredoc string.

Newlines and everything else is preserved.
HEREDOC;
于 2010-09-13T11:44:36.203 回答
20

它是使用HEREDOC 语法的字符串的开头。

第三种分隔字符串的方法是 heredoc 语法:<<<。

在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。

于 2010-09-13T11:42:45.257 回答
19

这被称为heredoc,它可以让你做一段跨越几行的长文本。您可以将 PHP 变量放在那里,它们将替换为该值。CHART 这个词可以是任何东西。它只需要在引用文本开始的地方开始和停止相同。

您可以通过附加多个带引号的字符串来做同样的事情,但是对于像这个 HTML 文本这样的扩展文档来说,大多数时候这更干净。还有一种叫做nowdoc的东西,它就像 PHP 中的单引号字符串,但它们不允许您在其中使用变量。

于 2012-06-18T22:37:02.237 回答
12

这是 PHP 的heredoc.

例子:

$sql = <<<MySQL_QUERY
SELECT * 
FROM TAB 
WHERE A = 1 AND B = 2 
MySQL_QUERY;           
于 2010-09-13T11:42:45.887 回答
8

这是一个heredoc,对于长字符串,您不必担心引号之类的。如果您注意到单词 CHART,然后有一行显示 CHART;,则表示字符串的结尾。

使用这种格式时要记住的重要一点是,无论您使用什么字符串来定义字符串的结尾(例如本例中的 CHART),该单词都必须单独出现在一行上,后跟分号,并且否字符可以出现在同一行的分号之后,甚至是空格,否则 PHP 认为它是字符串的一部分。

于 2012-06-18T22:38:44.063 回答
7

这是heredoc 语法

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
于 2010-09-13T11:43:01.523 回答
0

我发现两者都Heredoc非常Nowdoc强大和有用PHP,我很惊讶到目前为止没有人给出更多的例子来说明你可以做什么。

Heredoc首先和之间的区别Nowdoc很简单,

  • Heredoc: 就像 "" 双引号字符串你可以放变量
  • Nowdoc: 就像 '' 单引号字符串没有变量被解析

对于以下示例,我将仅显示Heredoc, 以便 Nowdoc将标记包含在单引号内 -> 'TOKEN'。

特点和优势

  • "" 和 '' 可以根据需要添加,不会导致任何错误
  • 使用动态变量轻松输出 HTML 代码,避免 useell 连接。
  • 将其存储在变量中以供字母使用,可以创建小组件并输出它们。
  • Lines 用 '\n' 逐字解释,因此就像在文档中写,也可以
    用 nl2br 添加。

简单示例

$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"

食谱

  1. 使用 nl2br<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"
  1. 创建小组件

         <?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
    
    ?>

文档

于 2022-01-06T08:36:53.977 回答
-1

为了得到一个清晰的想法:

$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()某种需要一些处理的方法。相反,我们可以使用<<<运算符来节省一些时间并获得一些干净的代码。:)

于 2020-12-29T17:36:11.093 回答