数组与类使用PHP的可变变量名需要的注意的问题


Posted in PHP onJune 20, 2013

有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名 :
$a = 'hello';
可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。
$$a = 'world';
通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello” 以及变量$hello,装的内容是 “world”。 于是,下面的语言:
echo "$a ${$a}";
跟下面的语句的输出完全一致:
echo "$a $hello";
它们都输出:hello world。
但是为了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要 把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。

类属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运 行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。

<?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 相关文章推荐
利用 window_onload 实现select默认选择
Oct 09 PHP
php短域名转换为实际域名函数
Jan 17 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
php中JSON的使用与转换
Jan 14 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 #PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 #PHP
php Xdebug的安装与使用详解
Jun 20 #PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 #PHP
hadoop中一些常用的命令介绍
Jun 19 #PHP
hadoop常见错误以及处理方法详解
Jun 19 #PHP
php常用Output和ptions/Info函数集介绍
Jun 19 #PHP
You might like
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP实现递归无限级分类
2015/10/22 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
JS input 数字验证代码
2009/07/30 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
python写的一个文本编辑器
2014/01/23 Python
Python常见异常分类与处理方法
2017/06/04 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
python检测服务器端口代码实例
2019/08/31 Python
学习Python列表的基础知识汇总
2020/03/10 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Python 创建TCP服务器的方法
2020/07/28 Python
安全生产中长期规划实施方案
2014/02/21 职场文书
出纳岗位职责
2015/01/31 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
高中政治教学反思
2016/02/23 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js