• 技术文章 >后端开发 >php教程

    亲,给个答案吧,该如何处理

    2016-06-13 13:46:59原创358
    亲,给个答案吧
    $out = <<
    END;
    echo $out;
    是什么意思?

    ------解决方案--------------------
    定义了一个字符串 $out php heredoc
    http://apps.hi.baidu.com/share/detail/15604411
    ------解决方案--------------------
    Heredoc结构

    第三种定义字符串的方法是用heredoc句法结构:<<<。在该提示 符后面,要定义个标识符,然后是一个新行。接下来是字符串 本身,最后要用前面定义的标识符作为结束标志。

    结束时所引用的标识符必须在一行的开始位置, 而且,标识符的命名也要像其它标签一样遵守PHP的规则:只能包含 字母、数字和下划线,并且不能用数字和下划线作为开头。

    Warning
    要注意的是结束标识符这行除了 可能有一个分号(;)外,绝对不能包括 其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或tabs。更重要的是结束标识符的前面必须是个被本地 操作系统认可的新行标签,比如在UNIX和Mac OS X系统中是\n ,而结束标识符(可能有个分号)的后面也必须跟个 新行标签。

    如果不遵守该规则导致结束标签不“干净”,PHP将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP将会在最后一 行产生一个句法错误。

    Heredocs结构不能用来初始化class,而从PHP 5.3以后,则该限制只能用在包含变量的情况下。

    Example #1 非法的示例
    class foo {
    public $bar = <<bar
    EOT;
    }
    ?>
    Heredoc结构就象是没有使用双引号的双引号字符串, 这就是说在heredoc结构中引号不用被替换,但是上文中列出的字符 (\n等)也可使用。 变量将被替换,但在heredoc结构中字符串表达复杂变量时,要格外小 心。

    Example #2 Heredoc结构的字符串示例
    $str = <<Example of string
    spanning multiple lines
    using heredoc syntax.
    EOD;

    /* 含有变量的更复杂示例 */
    class foo
    {
    var $foo;
    var $bar;

    function foo()
    {
    $this->foo = 'Foo';
    $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
    }

    $foo = new foo();
    $name = 'MyName';

    echo <<My name is "$name". I am printing some $foo->foo.
    Now, I am printing some {$foo->bar[1]}.
    This should print a capital 'A': \x41
    EOT;
    ?>
    以上例程会输出:

    My name is "MyName". I am printing some Foo.
    Now, I am printing some Bar2.
    This should print a capital 'A': A
    也可以把Heredoc结构用在函数参数中来传输数据:

    Example #3 Heredoc结构在参数中的示例
    var_dump(array(<<foobar!
    EOD
    ));
    ?>
    在PHP 5.3.0以后,也可以用Heredoc结构来初始化静态变量和类的属性和常量:

    Example #4 使用Heredoc结构来初始化静态值
    // 静态变量
    function foo()
    {
    static $bar = <<Nothing in here...
    LABEL;
    }

    // 类的常量、属性
    class foo
    {
    const BAR = <<Constant example
    FOOBAR;

    public $baz = <<Property example
    FOOBAR;
    }
    ?>
    在PHP 5.3.0中还在Heredoc结构中用双引号来声明标志符:

    Example #5 在heredoc结构中使用双引号
    echo <<<"FOOBAR"
    Hello World!
    FOOBAR;
    ?>
    Note:

    PHP4才引入了Heredoc结构。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:lt quot Heredoc foo class
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP跳转函数跟一个通用的操作提示类的编写• 使用PHP程序header location 开展跳转的注意的一个细节 • php Memcache 中实现讯息队列 • 请问一个curl数据采集的有关问题 • 页面无动作,五分钟后自动退出系统
    1/1

    PHP中文网