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&amp;mysql(三)
Oct 09 PHP
PHP执行速率优化技巧小结
Mar 15 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
php HandlerSocket的使用
May 02 PHP
php session安全问题分析
Jun 24 PHP
关于crontab的使用详解
Jun 24 PHP
php中require和require_once的区别说明
Feb 27 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
laravel异步监控定时调度器实例详解
Jun 21 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中实现进程间通讯
2006/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
php获取文件大小的方法
2014/02/26 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
js调用flash的效果代码
2008/04/26 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
2018/08/16 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
python语音识别实践之百度语音API
2018/08/30 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python中os包的用法
2020/06/01 Python
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
远程培训的心得体会
2014/09/01 职场文书
刑事申诉状范文
2015/05/20 职场文书
2016十一国庆节感言
2015/12/09 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL