首页 > PHP > PHP中变量定义和变量替换的方法

PHP中变量定义和变量替换的方法

2009年06月23号
查看评论 发表评论 1,946次浏览

当用双引号或heredoc定义字符串直接量时,字符串服从变量替换(variable interpolation)规则。替换即在字符串中用变量的值来替换变量名,也就是说在字符串中会自动进行变量解析。有两种方法把变量替换到字符串中——简单的方法和复杂的方法。

简单的方法是把变量名放在双引号字符串或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 = ‘\n’;               // 不是转义序列

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字符
 

页面: 1 2

类别PHP 标签
  1. christian louboutin ebay
    发表于 2010年06月28号 12时11分34秒 | 1楼

    good. Refreshing.

  2. chanel handbags sale
    发表于 2010年06月30号 10时42分57秒 | 2楼

    I think you are keeping our spirits up with your posts while struggling with depression. Good for you.

  3. cheap mbt shoes
    发表于 2010年06月30号 15时32分18秒 | 3楼

    it is such a colorful description.

  4. Nike AF1 Shoes
    发表于 2010年07月01号 09时07分29秒 | 4楼

    This leaves no doubt as to where your talent actually comes from.

  5. chanel handbags sale
    发表于 2010年07月01号 14时45分12秒 | 5楼

    luv it

  6. sale mbt shoes
    发表于 2010年07月01号 16时08分50秒 | 6楼

    this year is G.O.O.D

  7. kobe bryant v
    发表于 2010年07月02号 21时17分35秒 | 7楼

    I am curious!

  8. Evan Longoria Jersey
    发表于 2010年07月03号 17时45分44秒 | 8楼

    Very much like this.

  9. timberland custom booots
    发表于 2010年07月03号 17时47分40秒 | 9楼

    Good to hear, and no worries.

  10. christian louboutin otk boots
    发表于 2010年07月08号 08时52分34秒 | 10楼

    Your quotation looks familiar to me.

  11. louis vuitton bags online
    发表于 2010年07月10号 13时49分11秒 | 11楼

    Better and Cool

  12. lacoste shoes
    发表于 2010年07月11号 03时55分04秒 | 12楼

    Truly fantastic!

  13. Lebron James Basketball Shoes
    发表于 2010年07月16号 15时55分52秒 | 13楼

    What a refreshing post!!!

  14. paul smith bags
    发表于 2010年07月17号 17时37分23秒 | 14楼

    YOUR WORDS ALWAYS INSPIRE ME AND PUT MY SPIRIT HIGH.

  15. nike airforce one
    发表于 2010年07月19号 16时16分19秒 | 15楼

    It’s heroic.It is as the candle burns itself to give light to others.

评论页数:
你必需 登陆 才能发表评论.