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常用代码
Nov 23 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
php常用Stream函数集介绍
Jun 24 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
php实现设计模式中的单例模式详解
Oct 11 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
PHP类型约束用法示例
Sep 28 PHP
PHP中number_format()函数的用法讲解
Apr 08 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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
Terran兵种介绍
2020/03/14 星际争霸
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Python实现图像几何变换
2015/07/06 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
numpy实现RNN原理实现
2021/03/02 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
文员岗位职责
2013/11/09 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
vue elementUI表格控制对应列
2022/04/13 Vue.js