【问题标题】:php : echo"", print(), printf()php:回声“”,打印(),打印()
【发布时间】:2009-10-01 15:54:32
【问题描述】:

有没有更好的方法用 PHP 将数据输出到 html 页面?

如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西

print ('<div>'.$var.'</div>');

echo "'<div>'.$var.'</div>'";

这样做的正确方法是什么?

或者更好的方法,填写$tempvar 并打印一次?像这样:

$tempvar = '<div>'.$var.'</div>'
print ($tempvar);

事实上,在现实生活中,var 会被填充更多!

【问题讨论】:

  • 您还应该使用表示层(例如 Smarty)将显示逻辑与应用程序逻辑分开。 Smarty 模板编译为普通的 PHP 页面,但您的代码保持干净得多。

标签: php syntax


【解决方案1】:

PHP 中echoprint 有两个区别:

  • print 返回一个值。它总是返回 1。

  • echo 可以采用逗号分隔的参数列表来输出。

总是返回 1 似乎不是特别有用。并且可以使用多个调用或字符串连接来模拟以逗号分隔的参数列表。所以echoprint 之间的选择很大程度上取决于风格。我见过的大多数 PHP 代码都使用echo

printf() 是 c 的 printf() 的直接模拟。如果您对 c 习语感到满意,则可以使用 printf()。不过,很多年轻一代的人发现printf() 的特殊字符语法比等价的echo 代码可读性差。

echoprintprintf 之间的性能可能存在差异,但我不会太在意它们,因为在数据库驱动的 Web 应用程序(PHP 的典型域)中,将字符串打印到客户几乎肯定不是你的瓶颈。最重要的是,这三个中的任何一个都可以完成工作,并且一个并不比另一个好。这只是风格问题。

【讨论】:

  • 返回 1 并不是 echoprint 之间的唯一区别。恕我直言,主要区别在于echo 可以在不连接它们的情况下输出多个值(即echo '&lt;div&gt;', $a, $b, $c, '&lt;/div&gt;';),而print 不能这样做。
  • @binaryLV:好点。我忘记了。我已经更新了我的答案。谢谢。
【解决方案2】:

你甚至可以写

$var = "hello";

echo "Some Text $var some other text";
// output:
// Some Text hello some other text

print("Some Text $var some other text");
// output:
// Some Text hello some other text

没有太大的区别。这仅适用于双引号。使用单引号则不然。示例:

$var = "hello";

echo 'Some Text $var some other text'; // Note the single quotes!
// output:
// Some Text $var some other text

print('Some Text $var some other text'); // Note the single quotes!
// output:
// Some Text $var some other text

【讨论】:

    【解决方案3】:

    试试这个你会喜欢格式正确的信息量:

    <?php
      echo '<pre>';
      var_dump($your_var);
      echo '</pre>';
    ?>
    

    好的,我解释一下:设置“代码” html 格式,var_dump 显示变量的值、类型、参数...。

    【讨论】:

    • print_r 也应该被提及,它的作用几乎相同,递归的。
    【解决方案4】:

    http://us2.php.net/echo

    <div><? print($var); ?></div>
    

    或者如果你没有短标签,你可能需要

    <div><?php print($var); ?></div>
    

    如果您启用了 short_open_tag 选项,您可以这样做

    <?=$var?>
    

    但有些人觉得那很乱。

    【讨论】:

    • 短标签是邪恶的。它们会干扰文档类型定义。
    • 一个发现它很乱的例子!
    【解决方案5】:

    您还可以使用以下语法:

        echo <<<ENDOFTEXT
            <div>
                $var
            </div>
    ENDOFTEXT;
    

    只要确保ENDOFTEXT 没有缩进

    【讨论】:

      【解决方案6】:

      你可以这样做:

      <div><?php echo $var; ?></div>
      

      PHP 的优点之一是您可以将其插入到常规 HTML 中,并轻松完成上述操作。我一直在 PHP 中使用 echo 自己。不确定这是否是“正确”的方式,但它是最简单的。

      【讨论】:

        【解决方案7】:

        虽然echoprint 几乎相等,但您使用不同的值。您的第一个值将导致

        $var的值>

        而第二个将导致

        '
        '.$var>的值。'
        '

        但其余的在语义上几乎相等。由于echoprint 不是真正的函数,而是特殊的语言结构,所以第一个示例中的括号只是包装单个字符串值而不是参数列表。

        另请参阅 https://*.com/questions/1462581#1462636https://*.com/questions/1163473#1163793

        【讨论】:

          【解决方案8】:

          我在某处读到 echo 比打印更快。但它的性能提升太小了。

          【讨论】: