数组与类使用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 相关文章推荐
十天学会php之第二天
Oct 09 PHP
详解:――如何将图片储存在数据库里
Dec 05 PHP
抓取YAHOO股票报价的类
May 15 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
PHP的SQL注入过程分析
Jan 06 PHP
PHP生成RSS文件类实例
Dec 05 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php用户登录之cookie信息安全分析
May 13 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 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设计模式中的工厂模式
2008/06/12 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
PHP中使用curl入门教程
2015/07/02 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
PHP 裁剪图片
2021/03/09 PHP
Jquery cookie操作代码
2010/03/14 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
深入理解python中的atexit模块
2017/03/07 Python
django 外键model的互相读取方法
2018/12/15 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
美容院考勤制度
2014/01/30 职场文书
表演方阵解说词
2014/02/08 职场文书
第二课堂活动总结
2014/05/07 职场文书
初婚未育证明样本
2014/10/24 职场文书
小学校本教研总结
2015/08/13 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python