PHP 变量定义和变量替换的方法

有两种方法把变量替换到字符串中——简单的方法和复杂的方法。
简单的方法是把变量名放在双引号字符串或heredoc中:
$who = ‘Kilroy';
$where = ‘here';
echo “$who was $where”;
Kilroy was here
复杂的方法是把要替换的变量用大括号括起来。这种方法可以用于消除歧义或替换数组查找。大括号的经典作用是把变量名从周围的文本中分隔出来:
$n = 12;
echo “You are the {$n}th person”;
You are the 12th person
如果没有大括号的话,PHP就会尝试打印出变量$nth的值。
和一些shell环境不同,在PHP字符串中变量不会重复解析,而只处理在双引号字符串中的解析,然后把其结果被作为字符串的值:
$bar = ‘this is not printed';
$foo = ‘$bar'; // 单引号
print(”$foo”); //双引号
$bar
4.1.2 用单引号括起来的字符串
Single-Quoted Strings
用单引号括起来的字符串并不替换变量。因为字符串直接量是用单引号括起来的,所以在下面的字符串中变量名没有被解析:
$name = ‘Fred';
$str = ‘Hello, $name'; // single-quoted 用单引号括起来
echo $str;
Hello, $name
在用单引号括起来的字符串中唯一可用的转义序列是 \'(把单引号放在用单引号括起来的字符串中)、\\(把一个反斜杠放在用单引号括起来的字符串中)。任何其他的反斜杠只能被解释为一个反斜杠:
$name = ‘Tim O\'Reilly'; //转义的单引号
echo $name;
$path = ‘C:\\WINDOWS'; //转义的反斜杠
echo $path;
$nope = ‘\n'; // 不是转义序列
echo $nope;
Tim O'Reilly
C:\WINDOWS
\n
4.1.3 用双引号括起来的字符串
Double-Quoted Strings
用双引号括起来的字符串将会进行变量解析并且允许使用许多转义序列。表4-1列出了在用双引号括起来的字符串中PHP认可的转义序列。
表4-1:用双引号括起来的字符串中的转义序列
转义序列 字符含义
\”
双引号
\n
换行
\r
回车
\t
制表符
\\
反斜杠
\$
美元符号
\{
左大括号
\}
右大括号
\[
左中括号
\]
右中括号
\0 through \777
用八进制表示的ASCII字符
\x0 through \xFF
用十六进制表示的ASCII字符
如果在用双引号括起来的字符串中发现一个未知的转义序列(例如,一个反斜杠后跟一个不在表4-1中的字符),就忽略这个转义序列(如果警告级设置为E_NOTICE,就会为这样的未知序列产生一个警告):
$str = “What is \c this?”; // 未知的转义序列
echo $str ;
What is \c this?
4.1.4 字符串定界
Here Documents heredoc
使用heredoc可以简单地把多行字符串放在程序中,如下所示:
$clerihew = <<< End_Of_Quote
Sir Humphrey Davy
Abominated gravy.
He lived in the odium
Of having discovered sodium.
End_Of_Quote;
echo $clerihew;
Sir Humphrey Davy
Abominated gravy.
He lived in the odium
Of having discovered sodium.
<<<符号(我们习惯称为字符串定界符――译者注)告诉PHP解析器你正在书写一个heredoc。在<<<符号和标识符(本例中即 End_Of_Quote)之间必须有一个空格,这样程序才可以辨别标识符。从下一行开始就是被引用的文本,直到它遇到仅由标识符组成的一行为止。
你可以把分号放在终止标识符的后面来结束语句,正如前面的代码所示。如果你在一个更复杂的表达式中使用heredoc,你需要将表达式分行来写:
printf(<<< Template
%s is %d years old.
Template
, “Fred”, 35);
在heredoc中的单引号和双引号被跳过(当作一般的符号):
$dialogue = <<< No_More
“It's not going to happen!” she fumed.
He raised an eyebrow. “Want to bet?”
No_More;
echo $dialogue;
“It's not going to happen!” she fumed.
He raised an eyebrow. “Want to bet?”
在heredoc中的空白符也被保留:
$ws = <<< Enough
boo
hoo
Enough;
// $ws = ” boo\n hoo\n”;
因为在结尾终止符前的换行符将被移除,所以下面这两个赋值是相同的:
$s = ‘Foo';
// same as 和下面的相同
$s = <<< End_of_pointless_heredoc
Foo
End_of_pointless_heredoc;
如果想用一个换行符来结束heredoc引用的字符串,则需要自己额外加入:
$s = <<< End
Foo

End;
//注意Foo后面跟一个空行,不可删除

(0)

相关推荐

  • PHP教程 预定义变量

    这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效.因此通常被称为自动全局变量(autoglobals)或者超全局变量(superglobals). 复制代码 代码如下: <?php $a = "PHP教程网"; echo "通过\$GLOBALS来取变量值:".$GLOBALS['a']; //输出:通过$GLOBALS来取变量值:PHP教程网 echo "<br/>"; echo "当前执行脚本

  • PHP Global定义全局变量使用说明

    很不习惯PHP中的变量作用域,PHP中函数变量和全局是完全隔绝的,也就是无法相互访问.比如下面这样: 复制代码 代码如下: $test = 123; abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);}$test = 123;abc(); //这里什么都不输出,因为访问不到$test变量function abc(){    echo($test);} 如果,你想在函数内部访问外部变量,你需要这样: 复制代码 代码如下: $

  • PHP Global变量定义当前页面的全局变量实现探讨

    PHP Global变量在实际应用中会发现许多问题需要我们不断的去完善处理.我们在这篇文章中就针对PHP Global变量出现的问题给出了一些具体的解决办法. 1:PHP Global变量的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件 复制代码 代码如下: $a=123; function aa() { Global $a; //如果不把$a定义为global变量 ,函数体内是不能访问$a的 echo $a; } aa(

  • php 变量定义方法

    1.定义常量define("CONSTANT", "Hello world."); 常量只能包含标量数据(boolean,integer,float 和 string). 调用常量时,只需要简单的用名称取得常量的值,而不能加"$"符号,如:echo CONSTANT: 注: 常量和(全局)变量在不同的名字空间中.这意味着例如 TRUE 和 $TRUE 是不同的. 2.普通变量$a = "hello"; 3.可变变量(使用两个美

  • PHP教程 变量定义

    PHP 中的变量 变量用于存储值,比如数字.文本字符串或数组. 一旦设置了某个变量,我们就可以在脚本中重复地使用它. PHP 中的所有变量都是以 $ 符号开始的,变量名是区分大小写的. 在 PHP 中设置变量的正确方法是: $var_name = value;PHP 的入门者往往会忘记在变量的前面的 $ 符号.如果那样做的话,变量将是无效的. 虽然在 PHP 中并不需要初始化变量,但这是个好习惯.未初始化的变量具有其类型的默认值 - FALSE,零,空字符串或者空数组. 复制代码 代码如下: <

  • php中各种定义变量的方法小结

    1.定义常量define("CONSTANT", "Hello world."); 常量只能包含标量数据(boolean,integer,float 和 string). 调用常量时,只需要简单的用名称取得常量的值,而不能加"$"符号,如:echo CONSTANT: 注: 常量和(全局)变量在不同的名字空间中.这意味着例如 TRUE 和 $TRUE 是不同的. 2.普通变量$a = "hello"; 3.可变变量(使用两个美

  • PHP 变量的定义方法

    变量的定义 ⚑变量的类型 ⚑变量的使用 变量即是存在于内存中可以不断变化的一个个对象,我们可以将内存想象成一个街道,街道中有许多住户,每位住户都会有自己的门牌号码,这就好比是内存中的地址(C语言中经常提到的一个概念,在这里我们就不多讨论了),对于其中一家住户我们可以说是1号楼1号,还可以说成是王小明家,用一个名字来代替一个地址.而王小明家里某一时刻有几个人就是一个变化的量了,可能中午有3个人,下午只有1个人,晚上有5个人.因此,对于内存中的某一地址我们要引用,也可以叫它为A,或者area.这就是

  • php 静态变量与自定义常量的使用方法

    ⚑ 静态变量的声明与使用 ⚑ 自定义常量的使用方式 什么是静态变量? 静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值. 下面举例: 复制代码 代码如下: <?php function add() { static $i=0; $i++; echo $i; } add(); echo " "; add(); ?> 这段程序中,主要定义了一个函数add

  • php 变量未定义等错误的解决方法

    项目中把错误等级设置为:error_reporting(E_ALL | E_STRICT); 数组变量未定义也会报错,其实挺好的,但有时候真的不需要报该错误,PHP的解决办法是: @$_GET['unkown']; 这样就可以放置该错误提示出来了.

  • PHP 变量定义和变量替换的方法

    有两种方法把变量替换到字符串中--简单的方法和复杂的方法. 简单的方法是把变量名放在双引号字符串或heredoc中: $who = 'Kilroy'; $where = 'here'; echo "$who was $where"; Kilroy was here 复杂的方法是把要替换的变量用大括号括起来.这种方法可以用于消除歧义或替换数组查找.大括号的经典作用是把变量名从周围的文本中分隔出来: $n = 12; echo "You are the {$n}th person

  • dos变量定义和引用方法

    变量定义和引用 1.MS-DOS shell 对变量.命令.命令行参数的大小写区分吗? 不区分 2.如何定义一个(环境)变量 ? SET <variable>=[<value>] 如果 <value> 是空字符串,则取消变量的定义,变量的值用双引号或空格结束.引号如果没有结束,则默认范围到行尾. 3.如何定义一个局部(环境)变量? 复制代码 代码如下: SETLOCAL   SET <variable>=[<value>] ENDLOCAL 变量

  • js中定义一个变量并判断其是否为空的方法

    js中定义一个变量 var params=null;判断params不为空的方法: 复制代码 代码如下: if(params && params.hasOwnProperty("name")){} 其中:console.info(params);//结果为:Object {}

  • Python 使用 environs 库定义环境变量的方法

    Environs是解析环境变量的Python库.它的开发受envparse启发,底层使用marshmallow验证并序列化值. 在运行一个项目的时候,我们经常会遇到设置不同环境的需求,如设置是开发环境.测试环境还是生产环境,或者在某些设置里面可能还需要设置一些变量开关,如设置调试开关.日志开关.功能开关等等. 这些变量其实就是在项目运行时我们给项目设置的一些参数.这些参数一般情况来说,可以有两种设置方法,一种是通过命令行参数,一种是通过环境变量.二者的适用范围不同,在不同的场景下我们可以选用更方

  • Javascript中将变量转换为字符串的三种方法

    前言 大家应该都知道,对于JavaScript,有3种不同方法可以将变量转换为字符串.这篇文章将详细介绍这些方法,并比较他们的优劣.下面话不多说了,来一起看看详细的介绍吧. 3种方法 将变量转换为字符串的3种方法如下: value.toString() "" + value String(value) 当value为null或者undefined时,第1种方法就不行了.而方法2和方法3基本上是一样的. ""+value: 将value与空字符串相加,即可将其转换为字

  • Shell脚本中判断变量为数字的3种方法

    方法1:通过expr 计算变量与一个整数值相加,如果能正常执行则为整数,否则执行出错,$?将是非0的值 复制代码 代码如下: expr $args + 0 &>/dev/null 方法2:打印变量通过sed替换的方式,将变量中的数字替换为空,如果执行替换后变量为空,则为整数 复制代码 代码如下: echo $args | sed 's/[0-9]//g' 如果判断负数则再用sed过滤负号 复制代码 代码如下: echo $args | sed 's/[0-9]//g' | sed 's/-/

  • 判断一个变量是数组Array类型的方法

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. 复制代码 代码如下: alert(typeof null); // "object" alert

  • C++静态成员变量和静态成员函数的使用方法总结

    一.静态成员变量: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员.和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则.同时,静态数据成员还具有以下特点: 1.静态数据成员的定义. 静态数据成员实际上是类域中的全局变量.所以,静态数据成员的定义(初始化)不应该被放在头文件中. 其定义方式与全局变量相同.举例如下: xxx.h文件 class base{ private: static const int _i;//

  • Kotlin语法学习-变量定义、函数扩展、Parcelable序列化等简单总结

    Kotlin语法学习-变量定义.函数扩展.Parcelable序列化等简单总结 今年 Google I/O 2017 开发者大会中,Google 宣布正式把 Kotlin 纳入 Android 程序的官方一级开发语言(First-class language),作为Android开发者,当然要逐步熟悉这门语言,第一步就要从语法开始学习. 在这之前,我们需要了解怎么使用Kotlin编写一个Android应用.对于Android Studio 3.0版本,我们在创建工程的时候直接勾选 Include

  • PHP使用函数静态变量实现指定迭代次数的方法

    本文实例讲述了PHP使用函数静态变量实现指定迭代次数的方法.分享给大家供大家参考,具体如下: 在PHP中,除了类的静态成员属性外,在函数中同样可以利用 static 定义静态变量.从而便捷的完成函数迭代. 例1: <?php function Test() { $a = 0; echo $a; $a++; } ?> 在上例中,每次调用Test函数,a都被重新赋值为0,因为一旦退出本函数则变量a都被重新赋值为0,因为一旦退出本函数则变量a 就不存在了.要想完成迭代,需要写一个不会丢失本次计数值的

随机推荐