繁体   English   中英

在 PHP 中,“<<<”代表什么?

[英]In PHP, what does "<<<" represent?

例如:

$sql = <<<MySQL_QUERY

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

例子:

echo <<<HEREDOC
This is a heredoc string.

Newlines and everything else is preserved.
HEREDOC;

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

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

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

这称为heredoc ,它可以让您制作一段跨越多行的长文本。 您可以将 PHP 变量放在那里,它们将替换为值。 图表这个词可以是任何东西。 它只需要在引用文本开始的地方开始和停止。

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

这是 PHP 的heredoc

例子:

$sql = <<<MySQL_QUERY
SELECT * 
FROM TAB 
WHERE A = 1 AND B = 2 
MySQL_QUERY;           

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

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

这是heredoc 语法

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

要获得清晰的想法:

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

我发现HeredocNowdocPHP都非常强大和有用,我很惊讶到目前为止没有人给出更多关于你可以做什么的例子。

首先HeredocNowdoc很简单,

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

对于以下示例,我将仅显示Heredoc ,为了制作Nowdoc只需将标记包裹在单引号内 -> 'TOKEN'。

特点和优势

  • "" 和 '' 可以根据需要添加,不会导致任何错误
  • 轻松输出带有动态变量的HTML代码,避免usesell串联。
  • 将其存储在变量中以供字母使用,可以创建小组件并输出它们。
  • 这些行是用 '\\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
    
    ?>

文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM