【问题标题】:PHP hidden trick or a supported feature?PHP 隐藏技巧或支持的功能?
【发布时间】:2010-08-05 07:43:35
【问题描述】:

我知道要在 php 中连接字符串,应该使用点:

echo 'hello' . ' world'; // hello world

但顺便说一句,我输入了这个:

echo 'hello' , ' world';

结果仍然是hello world,没有任何错误。

为什么会这样? 我们也可以使用逗号连接吗?

【问题讨论】:

    标签: php language-features


    【解决方案1】:

    它记录在echo 的条目中:

    void 回显(字符串 $arg1 [, 字符串 $...])

    这两种形式实际上并不等价,因为在评估函数的瞬间有一个difference

    【讨论】:

      【解决方案2】:

      不,不能用逗号连接:

      <?php
      
      $foo = 'One', 'Two';
      
      ?>
      

      解析错误:语法错误,意外 ','

      【讨论】:

        【解决方案3】:

        echo 是一种语言结构,因此您不需要括号。但是您正在“传递”多个参数来回显。把它想象成:

        echo('hello', ' world');

        【讨论】:

        • @bzim 语言结构。至少我没有说它“使数组变平”;)
        • 但这正是它所做的。 :)
        【解决方案4】:

        这不是什么隐藏的技巧,它就是 echo 的工作原理。如果您查看echo 的 PHP 参考文档,您会注意到它会回显您向其抛出的字符串列表。

        【讨论】:

          【解决方案5】:

          echo 是一种语言结构。它在某种程度上是在语法级别定义的特殊功能(我可能错了)。它是一个函数,它以某种方式不遵循任何定义函数/方法的定义方式作为示例以及调用它们的方式。它“绕过”了一些语法检查:)

          StackOverflow 中有一篇很好的帖子讨论了 difference between language construct & built in functions

          【讨论】:

            【解决方案6】:
            echo('hello', ' world');
            

            同理:

            echo 'hello', ' world';
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-17
              • 2010-09-13
              • 2010-09-23
              • 2020-06-01
              • 2011-04-21
              • 1970-01-01
              相关资源
              最近更新 更多