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. **变量标识符**:在PHP中,变量以美元符号($)开头,后跟变量名。变量名可以包含字母(A-Z,a-z),数字(0-9)和下划线(_),但不能以数字开头。例如,`$myVariable` 是一个合法的变量名。 2. **大小写敏感**...
【PHP序列化规则详解】 PHP序列化是一种将变量转换为可存储或传输的字符串的方法,主要涉及`serialize()`和`unserialize()`两个函数。自PHP 3.05版本起,这两个函数开始支持对象的序列化和反序列化。然而,PHP手册...
**PHP变量定义和变量替换的方法** 在PHP中,变量通过美元符号($)来定义,后跟变量名,例如`$variable`。变量在使用前必须先定义并赋值。变量的值可以通过字符串直接量来呈现,而字符串可以分为单引号字符串、双...
在网站开发过程中,经常需要在程序中定义一些符号来标记一些名称,如:类名、方法名、函数名、变量名等,这些符号被称为标识符。PHP 的标识符必须遵循一定的规则: * 标识符只能由字母、数字和下划线组成。 * ...
Python 的标识符是程序中变量、函数、类、模块等对象的名称,它们必须遵循一定的规则,以便于程序员理解和使用。下面将详细解析这些规则。 首先,Python 的标识符由字母(包括大写 A~Z 和小写 a~z)、下划线(_)和...
PHP的语法规则。 PHP的基本语句。 运用PHP语言编写简单程序。 PHP语法 PHP中变量有6种类型:整型,浮点型,字符型,数组型,对象型,布尔值。 PHP的运算符有算术、字符串、赋值、位、 逻辑运算和其它...
以上就是 Zend Certified PHP Engineer(200-550)认证考试中涉及的部分关键知识点,包括变量操作、类型转换、标识符规则、位运算、字符串运算、变量变量、流操作超时、缓冲区管理、预定义常量以及文件访问限制。...
标识符的命名规则如下: - 只能由字母(包括所有的英文字符和ASCII码值在127~255之间的字符)、数字或下划线组成。 - 必须以字母或下划线开头。 - 避免与PHP内置的关键字重名,以防发生冲突。 #### 五、PHP内置...
在PHP中,变量的声明以美元符号($)开头,后面跟着一个合法的标识符,这个标识符遵循与大多数编程语言相似的命名规则,即可以由字母、下划线(_)开始,由数字、下划线、字母组成。 在PHP中,变量并不需要预先声明...
【PHP标识符规则】 PHP中的标识符是变量、函数、类等的名称。它们遵循以下规则: 1. 标识符的长度可以是任意的,由字母、数字或下划线(_)组成,但不能以数字开头。 2. PHP中的标识符是区分大小写的,例如`$Eduask`...
在这些PHP考试题中,我们可以看到一些关于PHP语法、标识符、标记风格、文件操作、数组处理以及输出函数的基本概念。以下是对这些知识点的详细说明: 1. PHP标识符:PHP中的标识符用于表示变量、函数、类等,通常以...
通过以上题目及解析,我们可以了解到PHP中的一些基础概念和常用函数,包括标识符规则、PHP标记风格、文件操作、数组操作、数据输出以及字符串处理等。这些知识点不仅适用于面试准备,也是PHP开发的基础,掌握这些...
- **标识符规则**:标识符是变量、函数和其他实体的名称。在PHP中,标识符可以包含字母、数字和下划线,但不能以数字开始,且区分大小写。同一个名称可以用于变量和函数。 - **变量赋值**:变量通过`$`符号开始,...
- **类型转换**:PHP支持自动类型转换,这背后依赖于一套复杂但高效的转换规则。 - **引用计数**:为了高效地管理内存资源,PHP采用了引用计数机制。当一个变量被多个地方引用时,其引用计数会相应增加,只有当引用...
名称必须遵循标识符的规则:以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。变量名是大小写敏感的,`$Name` 和 `$name` 被视为两个不同的变量。 PHP有七种基本数据类型: 1. **字符串(String)**...
其中,`constant_name`是你自定义的常量名,必须遵循PHP的标识符规则;`value`是常量的值,它可以是任何类型,包括字符串、数字、数组甚至是对象;`case_sensitive`默认为true,表示常量名是区分大小写的,如果设置...
如果不符合这一规则,PHP解析器将会报错。 错误示例: ```php ... EOF ; // 错误,末尾有空格 ``` 正确示例: ```php ... EOF; ``` 3. **变量的使用**:在定界符内使用变量时,建议采用`{$...
【PHP标识符规则】 在PHP中,标识符用于表示变量、函数、类等的名称。以下是一些关于PHP标识符的重要规则: 1. 标识符必须以美元符号($)开头,后面跟着任何字母(包括Unicode字母)、数字或下划线(_)。 2. 标识符...