【问题标题】:Single Quoted String Over Multiple Lines多行单引号字符串
【发布时间】:2012-06-12 20:16:36
【问题描述】:

我正在阅读这本 PHP & MySQL 书籍,但在回显单引号字符串的多行时,我遇到了一些与我习惯的完全不同的东西。

给出的例子是这样的:

    echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">
        <tr>
          <td align="left"><b>This</b></td>
          <td align="left"><b>That</b></td>
          <td align="left"><b>Then</b></td>
          <td align="left"><b>When</b></td>
          <td align="left"><b>What</b></td>
        </tr>';

显然我可以摆脱 PHP 并使用 HTML,但这并不总是一种选择。当我没有那个选项时,我通常会分解我的字符串以便于阅读:

    echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">' . 
      '<tr>'
        '<td align="left"><b>This</b></td>' . 
        '<td align="left"><b>That</b></td>' . 
        '<td align="left"><b>Then</b></td>' . 
        '<td align="left"><b>When</b></td>' . 
        '<td align="left"><b>What</b></td>' . 
      '</tr>';

这本书的作者在 php 社区中很受尊敬,这本书得到了强烈的推荐和很好的评论……所以我的问题是:

他的方法有什么问题吗?应该这样练习吗?

【问题讨论】:

  • 没有什么问题,不过多行字符串可以考虑使用heredoc syntax
  • 为什么第二版比第一版更容易阅读?我会说相反,所有添加的标点符号都在那里......
  • 第二种方式是我最初学会的回显多行字符串的方式。知道没有多余的空格或制表符让我感到很温暖。但如您所见,我很容易搞砸:第 2 行缺少一个点。
  • 如果只看性能,在没有额外空格的情况下输出 HTML 会快一点,但也许作者这样做是因为他希望输出人类也可读的 HTML:- ) 此外,所有这些字符串连接都会增加一点开销。
  • “显然我可以摆脱 PHP 并使用 HTML,但这并不总是一种选择。” - 不正确。当涉及到输出文本时,这始终是一个选项。

标签: php string multiline


【解决方案1】:

不,这完全没有问题。请注意,带引号的字符串中的空格、制表符和换行符也会被输出。这很少会成为问题 - 只是需要记住的事情。

对我来说,它比你的方式更容易阅读,更难出错。实际上,您的示例有语法错误。你能找到丢失的点吗?

【讨论】:

  • netbeans 中有这个功能。如果您正在键入一个字符串并按回车键,则当前行将用引号关闭并连接新行。
【解决方案2】:

还有更多的可能性

?>
<table align="center" cellspacing="0" cellpadding="5" width="75%">
    <tr>
      <td align="left"><b>This</b></td>
      <td align="left"><b>That</b></td>
      <td align="left"><b>Then</b></td>
      <td align="left"><b>When</b></td>
      <td align="left"><b>What</b></td>
    </tr>
<?php

echo <<<HTML
<table align="center" cellspacing="0" cellpadding="5" width="75%">
    <tr>
      <td align="left"><b>This</b></td>
      <td align="left"><b>That</b></td>
      <td align="left"><b>Then</b></td>
      <td align="left"><b>When</b></td>
      <td align="left"><b>What</b></td>
    </tr>
HTML;

第一个在每个 IDE 中都被识别为 HTML,第二个至少在 PHPStorm 中被识别,因此 IDE 可以使用 HTML-syntax-highlighting 突出显示它,与您的 both 示例(旁注:PHPStorm 也突出显示字符串中的 html,因此还不错;)但据我所知,它无法验证字符串中的 html)

另外,您应该将输出与处理代码分开

【讨论】:

  • 你的第一个就是我说的跳出php的意思
  • 啊,好的,我明白了。如果您将视图与应用程序层分开(人们可能称之为“模板”),那么这总是是一种选择:)
猜你喜欢
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2015-07-01
  • 2022-01-12
  • 1970-01-01
  • 2012-08-29
  • 2014-05-29
  • 2010-10-13
相关资源
最近更新 更多