0 647 2020-11-13 17:50:11
收藏“可变变量”这一概念是 PHP 的特色语法,在其它的编程语言中一般没这种骚操作……
通俗的说,可变变量就是“变量的变量”,也就是一个变量下的变量。
要定义一个可变变量很简单,只需在一般的变量前面再加上一个美元符号"$"
<?php $hello= '你好'; $a= 'hello'; echo $$a; ?>
运行上面的代码,输出的是 “你好”。为什么会输出 “你好” 呢,我们来逐句解析。
第一句定义了一个普通的变量 $hello ,值为 “你好”;
第二句也定义了一个普通变脸 $a ,值为 “hello”;
第三句就用上了可变变量 $$a ,因为之前定义的 $a 的值为 “hello”,所以 $$a 就相当于 $hello,所以最终输出了 “你好”……
让我们再来看下一个例子……
<?php $a= 'hello'; $$a= 'world'; echo"$a ${$a}"; ?>
以上代码中,$a 的内容是 “hello”,$$a 的内容是 “word”。同时,因为 $$a 是一个可变变量,所以它等效于 $hello。因此上述代码也可以写成
<?php $a= 'hello'; $$a= 'world'; echo"$a $hello"; ?>
它们输出的内容都是 “hello world”
可变变量与数组要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。
解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
可变变量与类类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则会在本地范围来解析 $bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。
也可使用花括号来给属性名清晰定界。最有用是在属性位于数组中,或者属性名包含有多个部分或者属性名包含有非法字符时(例如来自 json_decode() 或 SimpleXML)。
<?php // 可变属性示例 classfoo { var $bar= 'I am bar.'; var $arr= array('I am A.', 'I am B.', 'I am C.'); var $r= 'I am r.'; } $foo= newfoo(); $bar= 'bar'; $baz= array('foo', 'bar', 'baz', 'quux'); echo$foo->$bar. "n"; echo$foo->$baz[1] . "n"; $start= 'b'; $end= 'ar'; echo$foo->{$start. $end} . "n"; $arr= 'arr'; echo $foo->$arr[1] . "n"; echo $foo->{$arr}[1] . "n"; ?>玩坏了的可变变量
在一个普通的变量前边加一个 “$” 它就变成了可变变量,那么要是在可变变量的前面再加一个 “$” 呢?再加两个,加 N 个呢? 统统没问题……
<?php $Bar= "a"; $Foo= "Bar"; $World= "Foo"; $Hello= "World"; $a= "Hello"; $a; // = Hello $$a; // => $Hello = World $$$a; // => $$Hello => $World = Foo $$$$a; // => $$$Hello => $$World = $Foo = Bar $$$$$a; // => $$$$Hello => $$$World = $$Foo = $Bar = a // 以下相当于进入了循环... $$$$$$a; // = Hello $$$$$$$a; // = World // 只要你愿意,你可以在前面加无数个美元符…… $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a; // Ps:据说搞 PHP 开发的都不差钱,因为有很多的 $ ... ... ?>
本文地址:https://xzo.com.cn/develop/php/443.html
如果您认可我们的分享,有意与我们合作开展帝国cms网站建设与开发业务或插件定制,请联系右侧在线客服。我们能给您的,就是高质量的模板与售后。
标注了信息来源为下载鸥的文章皆为原创,如果是转载的优质文章,我们也都标注了出处。如果您喜欢我们的文章,请按照下载鸥所标注的文章出处进行标注,谢谢您的配合。
PHP是一种服务器端、跨平台、html嵌入式的脚本语言,其功能十分强大、入门简单。在过去,民间一直有说法称“PHP是最好的编程语言”,是PHP开发者对自身所使用语言的肯定。
PHP曾是最主流的网站web开发语言之一,现在也依然十分流行。
在实际操作过程中,我们可能需要通过PHP正则提取字符串中的数字,并组成数组。...
猜你喜欢如果用rand()来获取随机ID是非常消耗性能的。小网站几百几千条数据...
我们知道,str_replace是可以执行替换命令的,但一般是用于一对一替换,这个很好...
今天遇到这样一个问题:php启用了session,经过测试也发现session生效了。但在a...
多维数组在实际开发中比较常见,要foreach循环也很简单。...
在开发过程中,我们很多时候会接到猜你喜欢的随机展示效果。这个随机,用php取...
php分割中文字符,之前计划的是可用于搜索结果、tag结果关键词标红。但在实际...
isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释...
百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...
一直没看到好用的帝国cms在线考试插件,所以自己开发了一款。在线考试插件用...
采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...
用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...
通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...
下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...
帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...
许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...