PHP的可变变量名的使用方法分享


Posted in PHP onFebruary 05, 2012

通常变量通过下面这样的语句来命名 :

<?php 
$a = 'hello'; 
?>

可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
<?php 
$$a = 'world'; 
?>

通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello” 以及变量$hello,装的内容是 “world”。 于是,下面的语言:
<?php 
echo "$a ${$a}"; 
?>

跟下面的语句的输出完全一致:
<?php 
echo "$a $hello"; 
?>

它们都输出:hello world。
为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。
类属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。
例1 可变变量名
<?php 
class foo { 
var $bar = 'I am bar.'; 
} 
$foo = new foo(); 
$bar = 'bar'; 
$baz = array('foo', 'bar', 'baz', 'quux'); 
echo $foo->$bar . "n"; 
echo $foo->$baz[1] . "n"; 
?>

上面的例子将会输出下面的结果:
I am bar.
I am bar.
警告
请注意,可变变量名不能用于PHP函数和类里的超级全局数组变量上。变量$this也是一个不能动态取名的特殊变量。
PHP 相关文章推荐
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 PHP
PHP中如何判断AJAX提交的数据
Feb 05 #PHP
用PHP书写安全的脚本代码
Feb 05 #PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 #PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 #PHP
PHP使用数组实现队列
Feb 05 #PHP
mysql数据库差异比较的PHP代码
Feb 05 #PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 #PHP
You might like
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
python处理二进制数据的方法
2015/06/03 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python实现中文文本分句的例子
2019/07/15 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
python如何建立全零数组
2020/07/19 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
财会自我鉴定范文
2013/12/27 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python