-
2021-05-08 02:25:54
在前面的文章中,我们介绍了“PHP数据类型——String字符串”。在定义字符串时,当字符串用双引号或 heredoc 结构定义时,字符串中的变量将会被解析。
PHP在字符串中使用变量时,可以使用以下2种语法规则:简单语法
复杂语法
简单语法
简单的语法规则是最常用和最方便的,它可以用最少的代码在一个 string 中嵌入一个变量,一个 array 的值,或一个 object 的属性。
当 PHP 解析器遇到一个美元符号($)时,它会和其它很多解析器一样,去组合尽量多的标识以形成一个合法的变量名。可以用花括号来明确变量名的界线。<?php $name='neil';echo"My name is$name.".PHP_EOL;
以上代码字符串中的变量将被解析,输出以下结果:My name is neil .
同样,一个 array 索引或一个 object 属性也可被解析。数组索引要用方括号(])来表示索引结束的边界,对象属性则是和上述的变量规则相同。<?php //字符串中使用数组array$names=array("neil","jack","name"=>"tom");echo"First name is$names[0].".'
';echo"Second name is$names[1].".'
';echo"Last name is$names[name].".'
';//字符串中使用对象classpeople{public$neil="neil";}$people=newpeople();echo"the name is$people->neil.";以上代码只是简单的使用$将变量引入字符串,如果想要表达更复杂的结构,可以使用复杂语法。
复杂(花括号)语法
复杂规则语法的显著标记是用花括号包围的表达式。
语法不是因为其语法复杂而得名,而是因为它可以使用复杂的表达式。任何具有 string 表达的标量变量,数组元素或对象属性都可使用此语法。只需简单地像在 string 以外的地方那样写出表达式,然后用花括号 { 和 } 把它括起来即可。
注意:
由于 { 无法被转义,只有 $ 紧挨着 { 时才会被识别。可以用 {\$ 来表达 {$。
下面的示例可以更好的解释:<?php $great='fantastic';//无效,输出: This is { fantastic}echo"This is {$great}";//有效,输出:This is fantasticecho"This is{$great}";//有效,只有通过花括号语法才能正确解析带引号的键名echo"This works:{$arr['key']}";//有效echo"This works:{$arr[4][3]}";
更多相关内容 -
bash变量里包含变量_在Bash中使用变量
2020-07-11 15:12:49bash变量里包含变量 在计算机科学(和休闲计算)中,变量是内存中的位置,用于保存任意信息以供以后使用。 换句话说,这是一个临时存储容器,供您将数据放入和取出数据。 在Bash shell中,该数据可以是单词(以...bash变量里包含变量
在计算机科学(和休闲计算)中,变量是内存中的位置,用于保存任意信息以供以后使用。 换句话说,这是一个临时存储容器,供您将数据放入和取出数据。 在Bash shell中,该数据可以是单词(以计算机术语为单位的字符串 )或数字( 整数 )。
您可能以前从未(知道)在计算机上使用过变量,但是您可能在生活的其他领域使用过变量。 当您说“给我那个”或“看看这个”之类的内容时,您使用的是语法变量(您将它们视为代词 ),因为“ this”和“ that”的含义取决于您所描绘的内容在您的脑海中,或者您指的是什么,以便您的听众知道您指的是什么。 在进行数学运算时,即使您可能不将其称为变量,也可以使用变量来代表未知值。
这是Bash变量的快速简单演示,您可能没有意识到自己每天都在使用。 PS1变量包含有关您希望终端提示如何显示的信息。 例如,可以通过重新定义PS1变量将其设置为非常简单的值(例如百分号( % )):
$ PS1 = "% "
%本文介绍了在Linux,BSD,Mac或Cygwin上运行的Bash Shell中的变量。 Microsoft开源PowerShell的用户应参阅我的文章PowerShell中的自变量 。
什么是变量?
在Bash中是否需要变量取决于您在终端中执行的操作。 对于某些用户而言,变量是管理数据的基本手段,而对于另一些用户来说,它们只是次要和暂时的便利,而对于另一些用户而言,它们也可能不存在。
最终,变量是一种工具。 您可以在发现它们的用途时使用它们,也可以放心地知道它们是由您的操作系统管理的。 但是,知识就是力量,而了解变量在Bash中的工作方式可以使您获得各种意想不到的创造性问题解决方案。
如何设置变量
您不需要特殊的权限即可创建变量。 它们是免费创建,免费使用且通常无害的。 在Bash shell(在Linux和Mac上)中,可以通过定义变量名,然后设置其值来设置它们。 以下示例创建一个名为FOO的新变量,并将其值设置为字符串/ home / seth / Documents :
$ declare FOO = "/home/seth/Documents"
成功是无言的沉默,因此您可能不确定变量是否已设置。 您可以使用echo命令自己查看结果,通过在变量前面加上一个美元符号( $ )来调用该变量。 为了确保完全按照定义定义读取变量,还可以将其用大括号和引号引起来。 这样做会保留可能出现在变量中的所有特殊字符。 在此示例中,这并不适用,但仍然是形成以下习惯:
$ echo " ${FOO} "
/ home / seth / Documents对于经常使用shell的人来说,设置变量可能是常见的事情,因此该过程变得有些非正式。 当一个字符串后跟一个等号( = )和一个值时,Bash会悄悄地假定您正在设置变量,从而使clarify关键字变得不必要:
$ FOO = "/home/seth/Documents"
变量通常用于将信息从一个系统传递到另一个系统。 在这个简单的示例中,您的变量不是很有用,但是它仍然可以传达信息。 例如,由于FOO变量的内容是文件路径 ,因此可以将变量用作〜/ Documents目录的快捷方式:
$ pwd
/ home / seth
$ cd " ${FOO} "
$ pwd
/ home / seth / Documents变量可以是任何非保留的字符串(以及整数和下划线)。 它们不一定要大写,但是它们通常都是大写的,因此易于识别为变量。
如何清除变量
您可以使用unset命令清除变量:
$ unset FOO
$ echo $FOO实际上,通常不需要采取此操作。 变量相对“便宜”,因此您可以创建它们,然后在不再需要它们时将其忘记。 但是,有时可能要确保变量为空,以避免将错误的信息传递给可能读取该变量的另一个进程。
创建具有碰撞保护功能的新变量
有时,您可能有理由相信您或过程已设置了变量。 如果您不想覆盖它,则可以使用一种特殊的语法将变量设置为其现有值,除非其现有值为空。
对于此示例,假定FOO设置为/ home / seth / Documents :
$ FOO = ${FOO:-"bar"}
$ echo $FOO
/ home / seth / Documents冒号:-表示导致声明默认为现有值。 要以其他方式查看此过程,请清除变量,然后重试:
$ unset FOO
$ echo $FOO
$ FOO = ${FOO:-"bar"}
$ echo $FOO
bar将变量传递给子进程
创建变量时,您正在创建所谓的局部变量 。 这意味着该变量对于您当前的shell来说是已知的,而只有您当前的shell知道。
此设置是对变量范围的有意限制。 根据设计,变量倾向于默认为仅本地可用,以使信息在需要知道的基础上保持共享。 例如,如果您愚蠢地创建了一个包含重要密码的明文变量,那么很高兴得知您的系统不允许远程shell或流氓守护进程(或在创建该变量的一个会话之外的任何其他程序)访问该密码。 。
使用本文开头的示例更改您的提示,然后在当前窗口中启动一个新的shell:
$ PS1 = "% "
% bash
$当启动新的Shell时, PS1的新值是默认提示,而不是新提示:子进程不会继承其父进程中设置的变量。 如果终止子进程,则返回到父外壳,然后再次看到自定义PS1提示符:
$ exit
%如果你想给一个变量传递给子进程,你可以在前面加上一个命令变量的定义,也可以将变量导出到子进程。
前置变量
您可以在运行命令之前添加任意数量的变量。 子进程是否使用变量取决于该进程,但是无论如何,您都可以将变量传递给它:
$ FOO = 123 bash
$ echo $FOO
123
$当您在运行某些库需要特殊位置的应用程序时(使用LD_LIBRARY_PATH变量),或者在使用非标准编译器编译软件时(使用CC变量),等等,前置是一个有用的技巧。 。
导出变量
使变量可用于子进程的另一种方法是export关键字,这是Bash内置的命令。 export命令扩展了您指定的任何一个或多个变量的范围:
$ PS1 = "% "
$ FOO = 123
$ export PS1
$ export FOO
% bash
% echo $PS1
%
% echo $FOO
123在这两种情况下,不仅仅是子shell有权访问已传递给它或导出的局部变量,它还是该shell的任何子进程。 您可以从同一外壳启动应用程序,并且该变量可以在应用程序中作为环境变量使用。
导出供系统上所有内容使用的变量称为环境变量 ,这是以后文章的主题。 同时,尝试对日常任务使用一些变量,以查看它们为您的工作流带来了什么。
翻译自: https://opensource.com/article/19/8/using-variables-bash
bash变量里包含变量
-
Python: 字符串中嵌入变量
2020-12-22 15:37:07问题:想创建一个内嵌变量的字符串,变量被它的值替换掉 解决方案: 1.Python并没有对在字符串中简单替换变量值提供直接的支持,但是通过字符串的format()方法来解决这个问题 >>>s.format(name='guoguo',n=...问题:想创建一个内嵌变量的字符串,变量被它的值替换掉
解决方案:
1.Python并没有对在字符串中简单替换变量值提供直接的支持,但是通过字符串的format()方法来解决这个问题
>>>s.format(name='guoguo',n=30) 'guoguo has 30 messages.' >>>S='{name} has {n} messages." >>>S.format(name='guoguo' ,n=3) 'guoguo has 3 messages.' >>>
2.如果要被替换的变量能在变量域中找到,那么结合使用
format_map()
和vars()>>>U='{name] has {n} messages.' >>>name='tietie' >>>n=9 >>>u.format_map(vars()) 'tietie has 9 messages.' >>>
3.vars() 还有一个有意思的特性就是它也适用于对象实例
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' >>> class inx: ... def _init_(self, name,n): ... self.name=name ... self.n=n ... >>> >>>a1=inx(' meimei' ,5) >>> >>>U='{name} has {n} messages.' >>>u.format_map(vars(a1)) 'meimei has 5 messages.' >>>
4.format 和format map() 的一个缺陷就是它们并不能很好的处理变量缺失的情况,
>>>s.format(name='guoguo') Traceback (most recent call last): Fi1e "<stdin>", line 1, in <module> KeyError: 'n'
解决如下
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' >>> class safe(dict): ... def _missing_(self,key): ... return'{'+ key +'}' >>> del n >>> n Traceback (most recent call last): File "<stdin>", line 1. in <module> NameError: name 'n' is not defined >>> name 'tietie' >>>s.format_map(safe(vars()) 'tietie has {n} messages.'
也有其他的解决办法,比如用模板字符串之类的,然而, format() 和
format map()
相比较上面这些方案而已更加先进,因此应该被优先选择。使用format() 方法还有一个好处就是你可以获得对字符串格式化的所有支持(对齐,填充,数字格式化等待),而这些特性是使用像模板字符串之类的方案不可能获得的。 -
含有变量的片段引用(th:fragment,th:with)
2021-03-29 10:30:14在第三次引用时,若使用th:insert或th:include可以获取到th:with中的参数,若使用th:replace则获取不到,因为th:with在这里是为div节点保存了局部变量,在使用th:replace时,整个div节点都会被替换掉。在使用
th:fragment
定义片段时,若显式指定片段参数,那么在引用片段时,如果不传入参数,则会抛异常。若不指定片段参数,那么在引用片段时,不管是否传入参数,都不会抛异常:后端传来参数:
@RequestMapping("test") public String test(HttpServletRequest request) { request.setAttribute("user", "Jack"); request.setAttribute("company", "Tencent"); return "test"; }
定义片段:
<div th:fragment="welcome"> <span th:text="'Hello ' + ${val1} + ', welcome to ' + ${val2}"></span> </div>
引用片段:
<div th:replace="~{footer.html::welcome(val1='ab', val2='cd')}"></div> <div th:replace="~{footer.html::welcome}"></div> <div th:include="~{footer.html::welcome}" th:with="val1=${user}, val2=${company}"></div>
结果:
<div> <span>Hello ab, welcome to cd</span> </div> <div> <span>Hello null, welcome to null</span> </div> <div> <span>Hello Jack, welcome to Tencent</span> </div>
其中,第一次引用时直接传入了参数,第二次引用时没有传入任何参数,第三次使用了
th:include
来引入片段。在第三次引用时,若使用
th:insert
或th:include
可以获取到th:with
中的参数,若使用th:replace
则获取不到,因为th:with
在这里是为div
节点保存了局部变量,在使用th:replace
时,整个div
节点都会被替换掉。 -
Java基础(5)——一维数组
2019-11-26 21:51:34声明数组变量 elementType[] arrayRefVar;(元素类型[] 数组引用变量;) elementType可以是任何数据类型,但是数组中的所有元素都必须具有相同的数据类型。下边就是一个实例:代码声明变量myList,它引用的是一个... -
自用maven-3.8.4,内含maven配置环境变量保姆级教程.doc
2022-02-05 14:03:32自用maven-3.8.4,内含maven配置环境变量保姆级教程.doc -
C语言如何利用数组存储“变量”
2019-10-10 19:00:05C语言如何利用数组存储“变量”数组简介数字常量字符常量字符串常量背景解决方法说明 数组简介 众所周知,数组仅能存储常量数据,包括数字常量、字符常量、字符串常量。但在实际应用中,可能会遇到需要按需修改数组... -
python 正则表达式包含变量的写法
2018-02-23 10:47:23包含变量的正则表达式写法 re.compile(r’表达式’+变量+’表达式’) re.compile(r’表达式(%s)表达式’ %变量) 示例代码: url = "oreilly.com" regex3 = re.compile(r"^((/|.)*(%s))" %... -
分享一道关于变量的选择题(内含全局变量、局部变量、变量的作用域、生命周期知识点)
2022-07-21 13:45:25复习一个容易搞混的小点:局变量、局部变量、变量的作用域、作用周期。 -
springboot-thymeleaf - 内嵌变量和布局
2020-03-26 20:55:31内嵌变量(Utility对象) 使用:"${#对象.方法(参数列表)}" dates : java.util.Date 的功能方法类 numbers : 格式化数字的功能方法 strings : 字符串对象的功能类 calendars : 类似#dates,面向java.util.Calendar ... -
LSTM多变量预测
2019-09-24 07:36:35LSTM多变量预测,本程序利用TensorFlow构建一个简易LSTM模型,内含对多个变量因子,以及本程序的运行环境。 -
【Java】用sort实现对数组的升序和降序排序
2021-02-24 09:59:38Java 用 sort 实现对数组的升序和降序排序一、升序二、降序 一、升序 使用 java.util.Arrays 类中的 sort() 方法对数组进行升序分为以下两步: 导入 java.util.Arrays 包。 使用 Arrays.sort(数组名) 语法对数组... -
有n个结构体变量,内含学生学号、姓名、3门课程的成绩,要求输出平均成绩最高的学生信息
2021-03-12 11:36:22//有n个结构体变量,内含学生学号、姓名、3门课程的成绩,要求输出平均成绩最高的学生信息(学号、姓名、三门课成绩、平均成绩) #include <stdio.h> typedef struct stu_info{ int num; char name[20]; ... -
装配变量和板级元件标号的图形编辑功能
2020-08-17 16:04:48Altium Designer Summer 09 的发布预示着关于装配变量和板极标注等图形化编辑时代的到来。从原理图设计原文件的角度看,这个特点可以使你快速有效的作出改变,但更为重要和明显的是,它对于装配变量和板极元件标注... -
JDK1.8环境变量的配置
2017-05-31 11:04:26JDK1.8环境变量配置详解,内含安装配置完成后的测试程序 -
【C】例9.7有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括...
2021-05-05 10:08:43//有n个结构体变量,内含学生学号、姓名和3门课程的成绩。 //要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩) #include <stdio.h> #define N 3 struct Student { int num; char ... -
JS全局变量和局部变量
2016-11-15 19:47:42js全局变量和局部变量 -
概率统计课件(内含例题)
2022-05-27 18:21:35概率统计课件(内含例题) 适合初学者自学 -
有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名...
2020-04-09 21:56:37有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩) 代码: #include<stdio.h> #define N 3 struct Student { int num; ... -
python的安装与环境变量的配置
2018-08-30 11:07:07内含python安装包,以及详细亲测的安装与环境变量配置教程 -
有n个结构体变量,内含学生学号,姓名和3门课的成绩。要求输出平均成绩最高的学生的信息
2021-02-23 17:27:15#include<stdio.h> #include<math.h> #include<string.h> struct Student { long num; char name[20]; float score[3]; float aver; }; ... printf("请输入各学生的信息... -
itou:板状形式的内含物
2021-03-31 19:52:14VOUS pouvez personnaliser LA构成撰写ENcréant AU即使得到niveau阙乐fichier README.md ,PUISÿ配置者莱变量D'环境在suivantes: DJANGO_PORT_ON_DOCKER_HOST=8080 POSTGRES_PORT_ON_DOCKER_HOST=5433 发展蓝瑟 ... -
java变量及作用域(内含进制转换规则)
2020-01-07 22:47:341.Java变量 1.1.变量(variable)的含义 * 变量相当于自然语言中的代词。比如“您好”中的“您”就是代词,我们为什么用代词?是因为我 们可以跟每个人说“您好”,通用、方便。同理,编程中也是一样的,变量让程序... -
蓝桥杯历年题目(内含答案)
2021-05-11 15:18:29蓝桥杯历年题目,可以作为练手题目 -
sklearn处理分类型特征:编码与哑变量
2020-01-17 22:22:30我们刚才已经用OrdinalEncoder把分类变量Sex和Embarked都转换成数字对应的类别了。在舱门Embarked这一 列中,我们使用[0,1,2]代表了三个不同的舱门,然而这种转换是正确的吗? 我们来思考三种不同性质的分类数据: 1... -
xray_linux_amd64 (内含高级版证书) .zip
2020-06-14 00:10:25内含6.13的xray和一份高级版证书 xray不仅是漏洞检测工具和poc编写、运行工具,更是一个开放性的技术交流平台,是安全技术爱好者的大本营。高级版便是在原有社区版的基础上,充分吸纳使用者的反馈建议后,应运而生。 -
jdk1.8安装及java环境变量配置(内含一键配置工具)
2021-02-27 21:56:22重点:java环境的配置包括jdk1.6、jdk1.7、jdk1.8其实是配置 JAVA_HOME变量、Path变量、ClassPath变量这三个在安装之前首先确认是是否配置过环境变量,如果不确定通过以下链接判断1、如果没有配置成功,下载相关软件... -
Qt5.15.3源码编译安装包(Win32版本,内含pdb符号文件)
2022-04-22 09:06:081,Qt 5.15.3 LTS作为一个补丁版本,没有增加任何新的功能,提供了错误修复和一些其他改进。与 5.15.2 相比,包含...4,下载后配置好VS环境变量,可直接引用,进行应用开发,希望能给有需要的伙伴提供一些帮助,谢谢! -
基于SPSS实现的因子分析实例 内含因子分析实际例子 共38页PPT.ppt
2021-07-25 15:35:40基于SPSS实现的因子分析实例 内含因子分析实际例子 共38页PPT FACTOR过程的选择项 (1)FACTOR过程的选择项共分为五类,分别使用主对话框中的五个子对话框按钮展开相应的子对话框进行选择。 (2)Descriptives 展开... -
8.shell中的变量(内含:su - 与su的区别)
2019-08-22 15:01:471.什么是变量? 变量 在程序运行过程中值是允许改变的量。 变量可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。 ...