`
bardo
  • 浏览: 378263 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11806
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10113
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9501
社区版块
存档分类
最新评论

PHP变量标识符的一些规则

    博客分类:
  • PHP
阅读更多

PHP变量标识符提供了非常特别的方便。但是,相当多的从事多年的PHP程序员却无法清楚它的具体用法,从而出错时,不知哪里错了。所以,现在总结一下。便于大家快速掌握。
PHP变量的运行机制是,将变量标识符$后的字符串,或表达式运算结果的字符串作为变量名,去变量池获取变量值。
可见,PHP相当于提供了一个变量的“名称指针”。它不同于C++的地址指针,因为,不会有空地址的不安全性。也不会有变量内存溢出的问题。所有这些PHP都给我们完成了。
变量标识符:
$:以后面的字符串为变量名,取同名变量。
   $a='Hello';
   $$a = 'world';
{}将其中的表达式解析成字串,并取此字串的变量,{}不能单独在表达式外部存在,否则就会当成流程控制而报错。这就是说, {}前必有$,或者外面必有引号。
echo $a, ${$a}; echo $a, $$a;

二者的区别: $总是寻找后面的第一个字串, {}是将内部的表达式解析为字串。PHP正是用这一方式实现了变量的“名称指针”。

${}:由{}返回字串交给$再处理。用途:对于表达式结果取变量。
 如:${$array[$i][$j]} , 如果使用 $$array[$i][$j]} 则PHP会找 $$array这个变量。而不是找$array[$i][$j]为结果的变量名的变量。

{}在函数中与表达式中
猜猜看:下面程序返回什么:

   $a='Hello';
   $$a = 'world';
   echo '1 ', $a, '{$a}', '</br>';
   echo '2 ', $a, "{$a}", '</br>';
   echo '3 ', $a, "{{$a}}", '</br>';   
   echo '4 ', $a, "${$a}", '</br>';   
   echo '5 ', $a, ${$a}, '</br>'; 
   echo '6 ', $a, "{${$a}}", '</br>'; 
   echo '7 ', $a, "{{${$a}}}", '</br>'; 
   echo '8 ', $a, "$$a", '</br>'; 
        echo '9 ', $a, "{a}", '</br>';
        echo '10 ', $a, "${a}", '</br>';

 

结果:

   echo '1 ', $a, '{$a}', '</br>';
输出是:1 Hello{$a} 

//正常情况下,单引号是非执行字串,按原结果返回。但是:Smarty同样会将其进行解析!!所以, Smarty模板中, ‘{$a}’这样的表达式,仍可能出现的是你不想要的结果!!
假如:str_replace('{$foo} ',$foo, '{$foo}.some');
因为上面的原因:需要改为:
  str_replace(array('{', '$foo',} '),array('',$foo, ''), '{$foo}.some');

   echo '2 ', $a, "{$a}", '</br>';
输出是: 2 HelloHello
双引号中,无论是否有{},变量总会被解析。
   echo '3 ', $a, "{{$a}}", '</br>';  
输出是: 3 Hello{Hello} 
//所以,如果要输出带{}的结果,则需要加两层。
   echo '4 ', $a, "${$a}", '</br>'; 
输出是: 4 Helloworld
   echo '5 ', $a, ${$a}, '</br>';
输出是: 4 Helloworld
// ${$表达式},无论外面是否带双引号,结果都是一样的 

   echo '6 ', $a, "{${$a}}", '</br>'; 
输出是: 6 Helloworld
   echo '7 ', $a, "{{${$a}}}", '</br>';
输出是: 7 Hello{world}
//要输出带{}的结果,必须多加一层。
echo '8 ', $a, "$$a", '</br>';
输出是: 8 Hello$Hello
//双引号中的$只执行一次。所以,结果就不是你所要的。

附注:{}还可用于数组,即对数组下标访问。即
$array[$i][$j] 与 $array{$i}{$j}是等价的。但正常,由于PHP文档中给出是的[]。而字符串是字节数组,所以,我们只有在用字节数组模式访问字符串时,才使用{}
$a='ux:Cache'; $a{2}=''; echo $a; 这个结果是什么,你知道吗?
echo '9 ', $a, "{a}", '</br>';
输出是:9 Hello{a}
   echo '10 ', $a, "${a}", '</br>';
输出是:10 HelloHello可以见到, {}外有$, {}也会将结果送给$解析。

总结:
双引号中的$只会解析一次。不会进行多重解析。echo “$$a”,则要改为 echo “${$a}”;
{}遇$成为{$foo}就会被解析。要输出带{}的结果,则要{{$foo}}
$是向后寻找字符串,所以,数组或表达式的结果: 不能
$$array[$i][$j] 而是要 ${$array[$i][$j]}

1
1
分享到:
评论

相关推荐

    PHP 变量的定义方法

    1. **变量标识符**:在PHP中,变量以美元符号($)开头,后跟变量名。变量名可以包含字母(A-Z,a-z),数字(0-9)和下划线(_),但不能以数字开头。例如,`$myVariable` 是一个合法的变量名。 2. **大小写敏感**...

    PHP序列化 规则

    【PHP序列化规则详解】 PHP序列化是一种将变量转换为可存储或传输的字符串的方法,主要涉及`serialize()`和`unserialize()`两个函数。自PHP 3.05版本起,这两个函数开始支持对象的序列化和反序列化。然而,PHP手册...

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

    **PHP变量定义和变量替换的方法** 在PHP中,变量通过美元符号($)来定义,后跟变量名,例如`$variable`。变量在使用前必须先定义并赋值。变量的值可以通过字符串直接量来呈现,而字符串可以分为单引号字符串、双...

    PHP程序设计基础第2章-PHP语法基础.pptx

    在网站开发过程中,经常需要在程序中定义一些符号来标记一些名称,如:类名、方法名、函数名、变量名等,这些符号被称为标识符。PHP 的标识符必须遵循一定的规则: * 标识符只能由字母、数字和下划线组成。 * ...

    python标识符命名规范原理解析

    Python 的标识符是程序中变量、函数、类、模块等对象的名称,它们必须遵循一定的规则,以便于程序员理解和使用。下面将详细解析这些规则。 首先,Python 的标识符由字母(包括大写 A~Z 和小写 a~z)、下划线(_)和...

    PHP语言简介.rar

    PHP的语法规则。 PHP的基本语句。 运用PHP语言编写简单程序。 PHP语法 PHP中变量有6种类型:整型,浮点型,字符型,数组型,对象型,布尔值。 PHP的运算符有算术、字符串、赋值、位、 逻辑运算和其它...

    Zend Certified PHP Engineer(200-550).docx

    以上就是 Zend Certified PHP Engineer(200-550)认证考试中涉及的部分关键知识点,包括变量操作、类型转换、标识符规则、位运算、字符串运算、变量变量、流操作超时、缓冲区管理、预定义常量以及文件访问限制。...

    php基本语法——记忆卡

    标识符的命名规则如下: - 只能由字母(包括所有的英文字符和ASCII码值在127~255之间的字符)、数字或下划线组成。 - 必须以字母或下划线开头。 - 避免与PHP内置的关键字重名,以防发生冲突。 #### 五、PHP内置...

    PHP正在进行时-变量详解及字符串动态插入变量

    在PHP中,变量的声明以美元符号($)开头,后面跟着一个合法的标识符,这个标识符遵循与大多数编程语言相似的命名规则,即可以由字母、下划线(_)开始,由数字、下划线、字母组成。 在PHP中,变量并不需要预先声明...

    php考试题借鉴.pdf

    【PHP标识符规则】 PHP中的标识符是变量、函数、类等的名称。它们遵循以下规则: 1. 标识符的长度可以是任意的,由字母、数字或下划线(_)组成,但不能以数字开头。 2. PHP中的标识符是区分大小写的,例如`$Eduask`...

    php考试题.pdf

    在这些PHP考试题中,我们可以看到一些关于PHP语法、标识符、标记风格、文件操作、数组处理以及输出函数的基本概念。以下是对这些知识点的详细说明: 1. PHP标识符:PHP中的标识符用于表示变量、函数、类等,通常以...

    PHP考试题面试题

    通过以上题目及解析,我们可以了解到PHP中的一些基础概念和常用函数,包括标识符规则、PHP标记风格、文件操作、数组操作、数据输出以及字符串处理等。这些知识点不仅适用于面试准备,也是PHP开发的基础,掌握这些...

    php基本语法

    - **标识符规则**:标识符是变量、函数和其他实体的名称。在PHP中,标识符可以包含字母、数字和下划线,但不能以数字开始,且区分大小写。同一个名称可以用于变量和函数。 - **变量赋值**:变量通过`$`符号开始,...

    深入理解PHP内核-php宝典

    - **类型转换**:PHP支持自动类型转换,这背后依赖于一套复杂但高效的转换规则。 - **引用计数**:为了高效地管理内存资源,PHP采用了引用计数机制。当一个变量被多个地方引用时,其引用计数会相应增加,只有当引用...

    php代码-php 变量展示

    名称必须遵循标识符的规则:以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。变量名是大小写敏感的,`$Name` 和 `$name` 被视为两个不同的变量。 PHP有七种基本数据类型: 1. **字符串(String)**...

    PHP编程基础--PHP常量.ppt

    其中,`constant_name`是你自定义的常量名,必须遵循PHP的标识符规则;`value`是常量的值,它可以是任何类型,包括字符串、数字、数组甚至是对象;`case_sensitive`默认为true,表示常量名是区分大小写的,如果设置...

    PHP 定界符 使用技巧

    如果不符合这一规则,PHP解析器将会报错。 错误示例: ```php ... EOF ; // 错误,末尾有空格 ``` 正确示例: ```php ... EOF; ``` 3. **变量的使用**:在定界符内使用变量时,建议采用`{$...

    php考试题整理.pdf

    【PHP标识符规则】 在PHP中,标识符用于表示变量、函数、类等的名称。以下是一些关于PHP标识符的重要规则: 1. 标识符必须以美元符号($)开头,后面跟着任何字母(包括Unicode字母)、数字或下划线(_)。 2. 标识符...

Global site tag (gtag.js) - Google Analytics