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

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

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

当用双引号或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. Evan Longoria Jersey
    发表于 2010年07月19号 19时03分23秒 | 1楼

    want to thank you for inspiring me to pursue your writing skill

  2. puma testastretta
    发表于 2010年07月19号 20时03分54秒 | 2楼

    That is very true side view.

  3. mbt shoes sale
    发表于 2010年07月19号 21时30分38秒 | 3楼

    Cool idea

  4. timberland 6 inch boots
    发表于 2010年07月19号 21时42分31秒 | 4楼

    Thank you God,thank you, and thanks to all the other warriors – for this blog

  5. chanel bag
    发表于 2010年07月20号 09时09分13秒 | 5楼

    I guess that was my intial thought too.

  6. mbt discount
    发表于 2010年07月21号 10时30分34秒 | 6楼

    Thanks, it meant a lot to me.

  7. miu miu bag
    发表于 2010年07月21号 11时58分25秒 | 7楼

    so far i read only parts of it, and looked at the photos, but i intend to read it this week…

  8. lacoste shoes
    发表于 2010年07月21号 12时55分15秒 | 8楼

    by the way I forgot the most important… your story is great, I love it from the beginning to the very end.

  9. cheap christian louboutin wedges
    发表于 2010年07月22号 12时59分31秒 | 9楼

    I磎 so happy today :-) Feels like a lot of pieces has fallen into place.

  10. timberland boots men
    发表于 2010年07月23号 10时31分48秒 | 10楼

    Thank you for your post today. It offers us wisdom in so many ways. Thanks also for that tiny thread!

  11. Chanel handbag
    发表于 2010年07月23号 11时00分58秒 | 11楼

    Just wish to thank you for all the lights that you put on my path via your quotes, your themes, your issues, your works.

  12. ghd iv styer
    发表于 2010年07月24号 11时32分48秒 | 12楼

    Thank you for your post today. It offers us wisdom in so many ways. Thanks also for that tiny thread!

  13. Discount Christian Louboutin Shoes
    发表于 2010年07月24号 15时12分41秒 | 13楼

    Very heartwarming.

  14. versace handbags
    发表于 2010年07月24号 16时24分07秒 | 14楼

    this helped me on my way to self discovery & healing.

  15. d&g women watches
    发表于 2010年07月25号 13时19分41秒 | 15楼

    lovely post

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