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出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
php Memcache 中实现消息队列
Nov 24 PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
php微信公众号开发之简答题
Oct 20 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 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 第三节 变量介绍
2012/04/28 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
详解vue 命名视图
2019/08/14 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Python的log日志功能及设置方法
2019/07/11 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Keras自定义IOU方式
2020/06/10 Python
Python gevent协程切换实现详解
2020/09/14 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
班组建设经验交流材料
2014/05/12 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
学习保证书怎么写
2015/02/26 职场文书
法制教育主题班会
2015/08/13 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书