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 相关文章推荐
基于文本的留言簿
Oct 09 PHP
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
PHP中ADODB类详解
Mar 25 PHP
php 表单数据的获取代码
Mar 10 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP开发微信支付的代码分享
May 25 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
四个PHP非常实用的功能
Sep 29 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 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 UTF8编码内的繁简转换类
2009/07/20 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
ThinkPHP之getField详解
2014/06/20 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
json的使用小结
2016/06/08 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
angular十大常见问题
2017/03/07 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
AngularJS中filter的使用实例详解
2017/08/25 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
Python实现自动上京东抢手机
2018/02/06 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
个人自我评价和职业目标
2014/01/24 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
艺术节开幕词
2015/01/28 职场文书
三孔导游词
2015/02/05 职场文书
计划生育工作总结2015
2015/04/03 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Golang的继承模拟实例
2021/06/30 Golang