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字符串分割函数用法实例
Mar 17 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
Symfony控制层深入详解
Mar 17 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 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
SONY SRF-40W电路分析
2021/03/02 无线电
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php微信开发之百度天气预报
2016/11/18 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
python简单实现旋转图片的方法
2015/05/30 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
对python中Json与object转化的方法详解
2018/12/31 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Django分组聚合查询实例分享
2020/04/29 Python
基于python实现查询ip地址来源
2020/06/02 Python
Python通过字典映射函数实现switch
2020/11/06 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
优秀的计算机专业求职信范文
2013/12/27 职场文书
司机辞职报告范文
2014/01/20 职场文书
兽医医药专业求职信
2014/07/27 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS