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源码之 ext/mysql扩展部分
Jul 17 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
php中namespace use用法实例分析
Jan 22 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP使用函数用法详解
Sep 30 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
php tpl模板引擎定义与使用示例
Aug 09 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php 常用算法和时间复杂度
2013/07/01 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php表单处理操作
2017/11/16 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
python requests 测试代理ip是否生效
2018/07/25 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
serialVersionUID具有什么样的特征
2014/02/20 面试题
报关简历自我评价怎么写
2013/09/19 职场文书
如何进行有效的自我评价
2013/09/27 职场文书
设计毕业生简历中的自我评价
2013/10/01 职场文书
新任教师自我鉴定
2014/02/24 职场文书
感恩的演讲稿
2014/05/06 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
小学生校园广播稿
2014/09/28 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
车间统计员岗位职责
2015/04/14 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js