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中一个控制字符串输出的函数
Oct 09 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
PHP安全性漫谈
Jun 28 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
一个PHP并发访问实例代码
Sep 06 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
php ajax实现文件上传进度条
Mar 29 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 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程序中防止盗链
2008/04/09 PHP
YII实现分页的方法
2014/07/09 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Python如何发布程序的详细教程
2018/10/09 Python
Python使用configparser库读取配置文件
2020/02/22 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
python的Jenkins接口调用方式
2020/05/12 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
如何解决python多种版本冲突问题
2020/10/13 Python
交通法规咨询中心工作职责
2013/11/27 职场文书
小学一年级评语大全
2014/04/22 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
社会工作专业求职信
2014/07/15 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
心理学培训心得体会
2016/01/22 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
把77A收信机改造成收音机
2022/04/05 无线电