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 14 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
php strcmp使用说明
Apr 22 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
php生成图片缩略图的方法
Apr 07 PHP
php无序树实现方法
Jul 28 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
详解php命令注入攻击
Apr 06 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
Python引用模块和查找模块路径
2016/03/17 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
深入浅析Python中的yield关键字
2018/01/24 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
党员自我批评与反省材料
2014/02/10 职场文书
倡议书格式
2014/08/30 职场文书
小学生差生评语
2014/12/29 职场文书
贪污检举信范文
2015/03/02 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang