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实现WEB动态网页静态
Oct 09 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
AJAX的使用方法详解
Apr 29 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
PHP7 新增功能
Mar 09 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
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
跟单文员岗位职责
2014/01/03 职场文书
童装店创业计划书
2014/01/09 职场文书
中国央视网签名寄语
2014/01/18 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python