php中的可变变量

有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:<?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 是数组单元时也是一样。

也可使用花括号来给属性名清晰定界。最有用是在属性位于数组中,或者属性名包含有多个部分或者属性名包含有非法字符时(例如来自json_decode() 或 SimpleXML)。

示例:<?php

class foo {

var $bar = 'I am bar.';

var $arr = array('I am A.', 'I am B.', 'I am C.');

var $r = 'I am r.';

}

$foo = new foo();

$bar = 'bar';

$baz = array('foo', 'bar', 'baz', 'quux');

echo $foo->$bar . "

";

echo $foo->$baz[1] . "

";

$start = 'b';

$end = 'ar';

echo $foo->{$start . $end} . "

";

$arr = 'arr';

echo $foo->$arr[1] . "

";

echo $foo->{$arr}[1] . "

";

?>

以上例程会输出:I am bar.

I am bar.

I am bar.

I am r.

I am B.

感谢大家的阅读,希望大家已经学会了可变变量。

本文转自:https://www.cnblogs.com/ryanzheng/p/9133381.html

推荐教程:《php教程》

php 变量代码,php中的可变变量(代码详解)相关推荐

  1. php布尔类型代码,php中的boolean(布尔)类型详解

    当转换为 boolean 时,以下值被认为是 FALSE: the 布尔值 FALSE 自身 the 整型值 0 (零) the 浮点型值 0.0 (零) 空 字符串, 以及 字符串 "0& ...

  2. python中可选参数和可变参数_Python函数中的可变长参数详解

    一.Python函数中的参数 1.使用python的函数时,有参数类别,比如位置参数.关键字参数.可变长参数 2.位置参数.关键字参数很好理解,关键是可变长参数经常能见到,但是一直没有搞懂是什么意思 ...

  3. Java成员变量查找_Java中的成员变量和局部变量

    声明成员变量  可以用public proteced private修饰 eg public class Apple{ public String color;//声明公共变量 public stat ...

  4. 标称变量(Categorical Features)或者分类变量(Categorical Features​​​​​​​)缺失值填补、详解及实战

    标称变量(Categorical Features)或者分类变量(Categorical Features)缺失值填补.详解及实战 核心学习函数或者方法: KNeighborsClassifier() ...

  5. python反向缩进_在Pycharm中对代码进行注释和缩进的方法详解

    在Pycharm中对代码进行注释和缩进的方法详解 一.注释 1. #单行注释 2. """ 多行注释 """ 3. pycharm多行注释快 ...

  6. 手机摄影中多摄融合理论详解与代码实战

    转载AI Studio项目链接https://aistudio.baidu.com/aistudio/projectdetail/3465839 手机摄影中多摄融合理论详解与代码实战 前言   从20 ...

  7. Flutter中Scaffold布局的使用详解及实例代码

    Flutter中Scaffold布局的使用详解及实例代码 Scaffold实现了基本的Material布局.只要是在Material中定义了的单个界面显示的布局控件元素,都可以使用Scaffold来绘 ...

  8. STM32(Cortex-M3)启动过程+IAR中xcl及icf文件详解

    一:STM32(Cortex-M3)启动过程(入口地址) ARM7和ARM9启动时从绝对地址0X00000000开始执行复位中断程序,即固定了复位后的起始地址,但中断向量表的位置是可变的. Corte ...

  9. iOS中的HotFix方案总结详解

    iOS中的HotFix方案总结详解 相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dy ...

最新文章

  1. 收藏:因为有这篇Sublime Text使用教程,我立即卸载掉了Notepad+...
  2. Xen 和 KVM 下如何关闭 virbr0
  3. KD树是什么? 为什么要用KD树? KD树怎么用? KD树和KNN的关联是什么?
  4. Struts2+Hibernate+Spring 整合示例
  5. maven 如何看jar是否被修改_如何在线修改jar文件
  6. C语言实例:将人员信息写入磁盘文件并读出显示
  7. 网络编程中BIO和NIO的区别
  8. js 从一个函数中传递值到另一个函数
  9. sublime text 3 前端开发常用插件
  10. 趣文:程序员等级图鉴
  11. 谷歌Chrome 81浏览器更新:新增微软Chromium版Edge现代Web控件
  12. 包含几通道数据_温度采集,无处不测!「数据采集」
  13. windows下使用vim
  14. Win7 Server 漏洞修复(CVE-2017-**、CVE-2018-**、CVE-2019-**、CVE-2012-**)
  15. 【老生谈算法】matlab实现小波分析源码——小波分析
  16. 三维点云课程(一)——点云基础介绍
  17. Python之路第七天,基础(9)-面向对象(上)
  18. 大数据分析引擎-Doris简要介绍
  19. 听歌用什么降噪耳机好?骑行抗风噪最好的蓝牙耳机
  20. 解决-最新版Google谷歌浏览器上传下载卡死无响应-问题

热门文章

  1. 【registry】registry An exception was thrown while processing request with message
  2. 【Http】HTTPclient保持长连接需要消费返回信息 不然很卡
  3. 01-maven build项目
  4. 云计算实战系列二(Linux-用户管理)
  5. mysql 类似plsql 软件_推荐一款PG数据库管理工具——pgadmin,一款类似PLSQL的工具...
  6. Springboot 关于日期时间格式化处理方式总结
  7. 你真的了解 ConcurrentHashMap 吗?
  8. leetcode题解8-盛最多水的容器
  9. Spring框架----Confinguration和Component-Scan注解
  10. Python3.6连接mysql(一)