php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符
php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符
方式一:使用花括号,前缀部分不需要用单引号
$nums10 = 100;
$xxx*${bcount.$nums10}['m54']/$nums10
方式二:使用两个$符,先给key赋值最终的变量名称,后面才当成真正的变量使用。
$nkey = 'bcount'.$nums10;
$xxx*$$nkey['m54']/$nums10
=================
PHP可以动态地创建一个变量名。如:使用与数据库查询得到的字段名称一致的变量名。
使用PHP中“可变变量”的语法:在一个其值为你想作为变量名称的变量前面加一个$:
$animal = 'turtles';
$turtles = 103;
print $$animal;
在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名称。例如:
$animal = 'turtles';
$turtles = 1024;
print $$animal;
这段代码会输出1024。因为$animal = ’turtles',$$animal 就是$turtles,而$turtles等于1024。
如果使用大括号,还能够构造出用于表示变量名的更复杂的表达式:
$stooges = array('Moe','Larry','Curly');
$stooge_moe = 'Moses Horwitz';
$stooge_larry = 'Louis Feinberg';
$stooge_curly = 'Jerome Horwitz';
foreach ($stooges as $s) {
print "$s's real name was ${'stooge_'.strtolower($s)}.\n";
}
Moe's real name was Moses Horwitz.
Larry's real name was Louis Feinberg.
Curly's real name was Jerome Horwitz.
PHP会求得位于大括号之间的表达式的值,并将这个值作为一个变量名。大括号中的表达式甚至还可以调用函数,比如上面代码中的strtolower()。
在迭代类似的变量名称时,可变变量也很有用。假如你想要查询一个数据库表,其字段名分别是title_1, title_2等。如果你想要检查一个标题($title)是否与其中一个字段的值匹配,那么最简单的方式就是像下面这样进行循环遍历:
for ($i = 1; $i <= $n; $i++) {
$t = "title_$i";
if ($title == $$t) { /* match */ }
}
当然,如果把这些值保存到一个数组中可能会更直观,不过,要是你在维护一段使用了这种技术的老代码(即不能修改),可变变量就很有用了。
大括号语法在理清有关数组元素的歧义时是必要的。可变变量$$donkeys[12]可能有两种含义。第一种含义是“拿$donkeys数组中第12元素的值作为一个变量名”,要想明确表示这种含义,应该写成:${$donkeys[12]}。第二种含义是“用标量$donkeys的值作为一个数组名称,并找到该数组中的第12元素”,若想明确表示这种含义,应该写成:${$donkeys}[12]。
HP中动态创建变量名语法并不局限于两个美元符号,可以使用三个甚至更多个。然而,在实践中很少出现有必要使用超过两个间隔层次的情况。
php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符的更多相关文章
- c++中变量、变量名、变量地址、指针、引用等含义
首先了解内存,内存就是一排房间,编号从0开始,0,1,2,3,4,5...... 房间里面一定要住人,新人住进去了,原来的人就走了:不管你住不住,里面都有人. 编号就是地址.里面的人就是内容,为了我们 ...
- js中定义用字符串拼接起来的变量名的变量
用对象的形式 你的问题可以通过js的对象实现 var ovar = {}; for(var i=0;i<10;i++){ ovar['var_'+i]=''; } 3用数组的形式 var arr ...
- 彻底解决Eclipse自动补全变量名及变量名后面追加类型名
彻底解决Eclipse自动补全变量名问题的方法步骤 发布于 2014-11-04 14:53 已被阅读 31613159 次 大家使用eclipse或者MyEclipse敲代码的时候,是不是都被这 ...
- Eclipse中java文件选中变量名,相同变量都变色显示 .
第一步设置高亮显示的颜色: Window-->preferences-->General-->Editors-->Text Editors-->Annotations-- ...
- php $$可变变量理解
//在变量前面加上两个$$,如$$name,这表示可变变量,可以动态的设置和使用,先设置一个普通变量,一个可变变量会获取了一个普通变量的值作为这个可变变量的变量名 $a = 'b'; $b = 'c' ...
- less的学习(@变量名)
引自:https://www.cnblogs.com/starof/p/5226739.html Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数 ...
- PHP中可变变量到底有什么用?
转自:http://blog.csdn.net/engine_1124/article/details/8660291 什么是可变变量? PHP提供了一种其他类型的变量——可变变量.可变变量允许我们动 ...
- PHP内置常量,和可变变量,常量的定义
关键常量 可变变量----变量名是变量的变量 常量的定义
- 5)PHP,可变变量
所谓可变变量,就是一个变量的名,又是一个变量. 可变变量的语法是php的很特殊的语法——其他语言中少见. $v1 = “abc”; //这是一个字符串变量,其内容是字符串“abc” $abc = ; ...
随机推荐
- AFNetworking遇到错误 Request failed: unacceptable content-type: text/html
iOS 使用AFNetworking遇到错误 Request failed: unacceptable content-type: text/html 原因: 不可接受的内容类型 “text/html ...
- docker容器跨服务器的迁移的方法
docker的备份方式有export和save两种. export是当前的状态,针对的是容器,docker save 是针对镜像images. export 找出要备份容器的ID ? 1 2 3 [r ...
- 关于 from scipy.misc import imread, imresize, imsave 报错的问题
使用 from scipy.misc import imread, imresize, imsave 时出现报错,查找后发现新版本的Scipy不再包含imread,imresize,imsave,需要 ...
- Vysor
官网:http://www.vysor.io/ Vysor用 PC远程控制投影安卓手机/平板工具 Vysor 是一个免费的google浏览器插件. 它可以让你在pc上控制你的Android手机.平板等 ...
- Kettle 执行SQL脚本
以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大, ...
- canopy聚类算法的MATLAB程序
canopy聚类算法的MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. canopy聚类算法简介 Canopy聚类算法是一个将对象分组到 ...
- 组装数据- 对象里面是key:value, value里面是数组的形式,如 {key:[aa,bb], key:[cc,dd]}
组合后 对象里面是key:value,value里面是数组的形式{key:[aa,bb], key:[cc,dd]} var chinaGeoCoordMap = { '无锡市': [121.4648 ...
- vue中如何使用echarts,使用axios获取数据
1==>首先准备一个容器 <div id="echartContainer" style="width:400px; height:400px"&g ...
- CF1256A Payment Without Change
CF1256A Payment Without Change 洛谷评测传送门 题目描述 You have aa coins of value nn and bb coins of value 11 . ...
- MySQL SQL DML (数据操作语言)
包括 SELECT, UPDATE, DELETE, INSERT SELECT 从数据库表中获取数据 用法 SELECT name FROM students; SELECT name,age FR ...