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

    PHP 变量定义和变量替换的方法_php技巧

    2016-05-17 09:31:26原创347
    有两种方法把变量替换到字符串中——简单的方法和复杂的方法。
    简单的方法是把变量名放在双引号字符串或heredoc中:
    $who = ‘Kilroy';
    $where = ‘here';
    echo “$who was $where”;
    Kilroy was here
    复杂的方法是把要替换的变量用大括号括起来。这种方法可以用于消除歧义或替换数组查找。大括号的经典作用是把变量名从周围的文本中分隔出来:
    $n = 12;
    echo “You are the {$n}th person”;
    You are the 12th person
    如果没有大括号的话,PHP就会尝试打印出变量$nth的值。
    和一些shell环境不同,在PHP字符串中变量不会重复解析,而只处理在双引号字符串中的解析,然后把其结果被作为字符串的值:
    $bar = ‘this is not printed';
    $foo = ‘$bar'; // 单引号
    print(”$foo”); //双引号
    $bar
    4.1.2 用单引号括起来的字符串
    Single-Quoted Strings
    用单引号括起来的字符串并不替换变量。因为字符串直接量是用单引号括起来的,所以在下面的字符串中变量名没有被解析:
    $name = ‘Fred';
    $str = ‘Hello, $name'; // single-quoted 用单引号括起来
    echo $str;
    Hello, $name
    在用单引号括起来的字符串中唯一可用的转义序列是 \'(把单引号放在用单引号括起来的字符串中)、\(把一个反斜杠放在用单引号括起来的字符串中)。任何其他的反斜杠只能被解释为一个反斜杠:
    $name = ‘Tim O\'Reilly'; //转义的单引号
    echo $name;
    $path = ‘C:\\WINDOWS'; //转义的反斜杠
    echo $path;
    $nope = ‘ '; // 不是转义序列
    echo $nope;
    Tim O'Reilly
    C:\WINDOWS
    \n
    4.1.3 用双引号括起来的字符串
    Double-Quoted Strings
    用双引号括起来的字符串将会进行变量解析并且允许使用许多转义序列。表4-1列出了在用双引号括起来的字符串中PHP认可的转义序列。
    表4-1:用双引号括起来的字符串中的转义序列
    转义序列 字符含义
    \”
    双引号
    \n
    换行
    \r
    回车
    \t
    制表符
    \\
    反斜杠
    \$
    美元符号
    \{
    左大括号
    \}
    右大括号
    \[
    左中括号
    \]
    右中括号
    \0 through \777
    用八进制表示的ASCII字符
    \x0 through \xFF
    用十六进制表示的ASCII字符
    如果在用双引号括起来的字符串中发现一个未知的转义序列(例如,一个反斜杠后跟一个不在表4-1中的字符),就忽略这个转义序列(如果警告级设置为E_NOTICE,就会为这样的未知序列产生一个警告):
    $str = “What is \c this?”; // 未知的转义序列
    echo $str ;
    What is \c this?
    4.1.4 字符串定界
    Here Documents heredoc
    使用heredoc可以简单地把多行字符串放在程序中,如下所示:
    $clerihew = <<< End_Of_Quote
    Sir Humphrey Davy
    Abominated gravy.
    He lived in the odium
    Of having discovered sodium.
    End_Of_Quote;
    echo $clerihew;
    Sir Humphrey Davy
    Abominated gravy.
    He lived in the odium
    Of having discovered sodium.
    <<<符号(我们习惯称为字符串定界符――译者注)告诉PHP解析器你正在书写一个heredoc。在<<<符号和标识符(本例中即 End_Of_Quote)之间必须有一个空格,这样程序才可以辨别标识符。从下一行开始就是被引用的文本,直到它遇到仅由标识符组成的一行为止。
    你可以把分号放在终止标识符的后面来结束语句,正如前面的代码所示。如果你在一个更复杂的表达式中使用heredoc,你需要将表达式分行来写:
    printf(<<< Template
    %s is %d years old.
    Template
    , “Fred”, 35);
    在heredoc中的单引号和双引号被跳过(当作一般的符号):
    $dialogue = <<< No_More
    “It's not going to happen!” she fumed.
    He raised an eyebrow. “Want to bet?”
    No_More;
    echo $dialogue;
    “It's not going to happen!” she fumed.
    He raised an eyebrow. “Want to bet?”
    在heredoc中的空白符也被保留:
    $ws = <<< Enough
    boo
    hoo
    Enough;
    // $ws = ” boo\n hoo\n”;
    因为在结尾终止符前的换行符将被移除,所以下面这两个赋值是相同的:
    $s = ‘Foo';
    // same as 和下面的相同
    $s = <<< End_of_pointless_heredoc
    Foo
    End_of_pointless_heredoc;
    如果想用一个换行符来结束heredoc引用的字符串,则需要自己额外加入:
    $s = <<< End
    Foo

    End;
    //注意Foo后面跟一个空行,不可删除
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP 中文乱码解决办法总结分析_php技巧 下一篇:php 图片上传类代码_php实例
    千万级数据并发解决方案

    相关文章推荐

    • thinkphp中分页保持查询条件不变的有关问题• PHP!在一个php文件中怎么执行两个不同的insert语句• php 数据能够获取 但没法写入数据库 同一文件另一个表可能写入• 政府门户• php优化解决方案
    1/1

    PHP中文网