数组与类使用PHP的可变变量名需要的注意的问题
2023-06-13 09:15:02 时间
有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名:
$a="hello";
可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
$$a="world";
通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello”以及变量$hello,装的内容是“world”。于是,下面的语言:
echo"$a${$a}";
跟下面的语句的输出完全一致:
echo"$a$hello";
它们都输出:helloworld。
但是为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。
类属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。
复制代码代码如下:
$a="hello";
可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
$$a="world";
通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello”以及变量$hello,装的内容是“world”。于是,下面的语言:
echo"$a${$a}";
跟下面的语句的输出完全一致:
echo"$a$hello";
但是为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。
类属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。
<?php
classfoo{
var$bar="Iambar.";
}
$foo=newfoo();
$bar="bar";
$baz=array("foo","bar","baz","quux");
echo$foo->$bar."\n";
echo$foo->$baz[1]."\n";
?>
上面的例子将会输出下面的结果:
Iambar.
Iambar.
相关文章
- mac开发php集成环境「建议收藏」
- 【说站】php数组交集函数
- 【php】Parse error: syntax error, unexpected ‘?’, expecting variable (T_VARIABLE)–PHP版本的问题
- PHP implode():数组转字符串
- 解决PHP连接MySQL乱码问题(php连接mysql乱码)
- php cli传递参数的方法详解编程语言
- PHP快速导出MySQL数据库的技巧(php导出mysql数据库)
- 数据库解决PHP连接远程MySQL数据库的问题(php连接远程mysql)
- PHP还是MSSQL:谁能成为你最佳开发工具?(用php还是mssql好)
- 如何在PHP中启用MSSQL数据库连接(php开启mssql)
- MySQL和PHP解决乱码问题(mysql php 乱码)
- 解决PHP输出MSSQL数据中文乱码问题(php输出MSSQL乱码)
- PHP驱动MSSQL数据库操作实例研究(php mssql操作类)
- PHP如何正确配置MongoDB数据库连接?(php配置mongodb)
- PHP函数mysqlclose的作用及用法详解(mysql_close()
- PHP的FTP学习(二)[转自奥索]
- 一步一步学习PHP(4)php函数补充2
- php数组二分法查找函数代码
- php关于array_multisort多维数组排序的使用说明
- php学习笔记[预定义数组(超全局数组)]
- PHP中用hash实现的数组
- PHP二维数组的去重问题解析
- PHP第二节数据类型之数组
- PHP中定义数组常量(array常量)的方法