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 相关文章推荐
PHP数字格式化
Dec 06 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
thinkphp 多表 事务详解
Jun 17 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
php session_decode函数用法讲解
May 26 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 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
一些PHP写的小东西
2006/12/06 PHP
php入门小知识
2008/03/24 PHP
PHP 命名空间实例说明
2011/01/27 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
讲解Python中的递归函数
2015/04/27 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
演讲稿开场白
2014/01/13 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年采购员工作总结
2015/04/27 职场文书
财务管理制度范本
2015/08/04 职场文书
同学聚会开幕词
2019/04/02 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis