`
classicbride
  • 浏览: 14825 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

PHP句法规则详解

PHP 
阅读更多
1.简单句法规则(用花括号界定变量名,适用于PHP所有版本):
$a = 'flower';
echo "She received some $as";
// 无效;字母s会被当成有效的变量名组成元素,但是这里的变量是$a
echo "She received some ${a}s"; // 有效
echo "She received some {$a}s"; // 有效;推荐的使用方法

我们希望表达的是”她收到一些花“,语境中的flower应该采用复数形式(也就是说应该在后面加上S),但是如果不对变量做任何界定的话,就会出现第一个echo的情况。显然我们希望输出的是$a而不是$as。那么我们通常是怎么来处理这个输出的呢?
echo "She received some $a"."s"; 
echo "She received some ".$a."s";

这两种习惯性的写法应该没有加花括号的写法简洁明了吧?
注意:不管{是出现在$前面还是后面,只有两者紧挨着时花括号才会被当成是界定符号。不要在之间加空格,要不然就会被当作普通的花括号处理
echo "She received some { $a}s"; 
// 输出的结果为:She received some { flower}s


2.复杂句法规则(用花括号界定表达式等,使用与PHP4+):
echo "有效的写法: {$arr[4][3]}";
// 有效;界定多维数组
echo "有效的写法: {$arr['foo'][3]}";
// 有效;当在字符串中使用多维数组时,一定要用括号将它括起来
echo "有效的写法: {$this->width}00"; 
// 有效;如果不界定的话,就会变成 $this->width00
echo "有效的写法: {$this->value[3]->name}";  
// 有效;该例演示了界定链式调用
echo "有效的写法: $name: {${$name}}"; 
// 有效;该例演示的效果实际上是一个可变变量
echo "有效的写法: {${getName()}}"; 
// 有效;该例演示了将函数的返回值作为变量名
echo "有效的下发: {${$this->getName()}}"; 
// 有效;该例演示了将函数的返回值作为变量名
注意1:echo "这样写有效吗: {getName()}";输出结果为:'这样写有效吗: 
{getName()}'。因为里面不含$,所以花括号不会被当作界定符
注意2:echo "这样写有效吗:{$arr[foo][3]}"; 在回答这个问题前我们先来进行一个实验:
error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 'd'=>'e');
echo "This is $arr[d]";
// 我们发现这样写是没有问题的,那么我们像下面这样写呢?
echo $arr[d];

产生了这样的错误:
Notice: Use of undefined constant d - assumed 'd'
注意:采用了未定义的常量d,可能应该为'd'
那么如果我们像下面这样修改一下代码的话
error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 'd'=>'e');
define('f', 'd');
echo $arr[f];

我们发现这次没有问题了。可以看出在字符串中数组的索引不加单引号是没有问题的,但是如果这种写法不是出现在字符串当中就会报错,而对于字符串中{$arr[foo][3]}的解析就是按照非字符串的方式解析的。所以说在字符串当中对数组只加花括号界定而不对索引加单引号的写法是错误的。因为程序会把不加单引号的索引当作是常量来进行解析,这就产生了错误。正确的写法应该是:
echo "有效的写法: {$arr['foo'][3]}";
特别提醒一点:echo "This is $arr[d]";这种写法虽然能够被程序解析,但这也仅限于数组是一维数组的情况。严谨的写法应该是:echo "This is {$arr['d']}";我的学生曾经在这一点上和我争论过,他说:既然前面一种写法能出结果,为什么一定要用后面一种写法呢?那么,我们再继续修改一下前面的代码
error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 
	'd'=>array('e'=>'f')
);
echo "This is $arr[d][e]";

这样还能够被正确解析吗?我只想告诉你,加花括号是严谨的必要的。当然,如果你不是我的学生那么我管不了那么多......

注意3:
error_reporting(E_ALL);
$arr = array('a', 'b', 'c', 'd');
echo "This is {$arr[2]} <br />";
echo "This is {$arr['2']} <br />";

执行上面的代码。结果是一样的,为什么会这样呢?我只能告诉你PHP是弱类型语言,至于什么叫弱类型语言我就不在这里多说了。自己去Google一下吧。说了这么多,那么最能体现这些句法规则优势的具体应用在什么地方呢?----SQL语句
// 示例一:
$SQL1 = "select * from table where id={$_GET['id']}";
// 示例二:
$SQL2 = "select * from table where id={$this->id}";

OK,花括号我们就玩到这里了。关于PHP的更多精彩敬请关注-重庆PHP
分享到:
评论

相关推荐

    PHP句法规则详解 入门学习

    本文将详细解析PHP的基本句法规则,包括简单句法规则和复杂句法规则,并提供相关实例。 首先,我们来探讨PHP中的简单句法规则。简单句法规则主要涉及变量的声明和使用。在PHP中,变量名前面通常会有一个美元符号($...

    zhengzebiaodashi.rar_句法规则

    正则表达式(Regular Expression,简称regex)是编程和数据处理中的强大工具,它通过一套特定的模式(句法规则)来匹配字符串。在“zhengzebiaodashi.rar_句法规则”这个压缩包中,我们可以期待找到关于正则表达式...

    ASN.1编码规则详解(最全最经典).pdf

    - **编码规则**:虽然ASN.1本身只定义了数据的抽象句法,但通过不同的编码规则,可以实现数据的具体表达。标准的编码规则包括: - **基本编码规则(BER)**:提供了通用且灵活的编码方式。 - **规范编码规则(CER...

    PCFGParser.exe.zip_pcfg_句法分析_句法分析器_句法分析树_后缀树

    句法分析器的一个Windows可执行文件,其用法:1. 先打开规则库,读入规则集 (规则文件放在 \rule目录下) 2. 选择经过分词和词性标注的文件,进行句法分析 (测试文件放在 \test目录下) 3. 分析结果文件与测试文件...

    乔姆斯基《句法结构》中文pdf

    基于此,乔姆斯基提出了转换生成语法的概念,认为可以通过一系列的转换规则来揭示句子的深层结构,从而有效地解释包括主动语态和被动语态在内的句法关系。 转换模式的提出,使得句法分析不再仅仅局限于表面结构,...

    句法树可视化程序

    在自然语言处理(NLP)领域,句法分析是一项核心任务,它旨在解析文本并构建出反映句子结构的树状模型,即句法树。句法树可视化程序就是专门用于展示这种句法结构的工具,它能将复杂的句法信息以直观易懂的图形方式...

    依存句法深度学习

    本篇将详细介绍依存句法深度学习的基本概念、关键技术以及在多词表达识别中的应用。 #### 一、依存句法分析基础 依存句法分析是一种语法分析方法,它关注于句子中词语之间的直接关系,即依存关系。这种关系反映了...

    第七章 句法分析技术.ppt

    【句法分析技术】是自然语言处理中的关键环节,它主要任务是对输入的词序列进行判断,确认这些词是否能够组成符合语法规则的句子,并进一步确定这些句子的句法结构。句法分析通过运用句法规则和其他相关知识,将线性...

    自然语言句法分析

    - **自底向上的Chart分析算法**:这种算法通过逐步检查句子中相邻词语的词性序列是否符合某条文法规则,进而逐步构建出句子的句法结构。具体步骤如下: - 首先给定一组上下文无关文法规则。 - 给定句子的词性序列...

    宗庆成-句法分析

    在宗庆成先生所撰写的自然语言处理课程资料中,第八章详细介绍了句法分析的基本概念及其在实际应用中的重要性和挑战。 #### 一、句法分析的概念与任务 句法分析(Syntactic Parsing)是一种自然语言处理技术,旨在...

    课件06_自然语言理解_句法分析1_短语结构与依存结构句法.pdf

    根据提供的文件信息,本课件主要讲述了自然语言理解中的句法分析,重点介绍了短语结构和依存结构句法。以下是对课件中知识点的详细解读: 首先,句法分析是自然语言理解中的一个重要环节,其目标是给定一个句子,...

    统计句法分析

    这种方法与传统的基于规则的句法分析不同,后者依赖于人工制定的语法规则,而统计句法分析则是通过学习大量已标注的语料库来推断出语法规则。 统计句法分析通常涉及以下核心概念和技术: 1. **依赖性句法分析**:...

    概率句法分析器-一个概率型的自然语言句法分析器

    概率句法分析器是一种在自然语言处理领域广泛应用的工具,其主要任务是对输入的自然语言文本进行句法分析,以理解语句的结构和意义。这个特定的概率句法分析器是由张浩开发的,它是一个运行在Windows环境下的概率...

    CYK算法实现句法分析(perl)

    在本案例中,我们关注的是其在句法分析中的应用,即分析输入字符串是否能被特定的文法规则解释。 Perl是一种强大的脚本编程语言,以其灵活性和适用于文本处理而闻名。在本压缩包中,Perl被用来实现CYK算法,从而对...

    英语翻译分句法合句法PPT课件.pptx

    在英语翻译中,分句法和合句法是两种重要的策略,用于调整原文与译文之间的句法结构,以确保译文的清晰度、流畅性和适应目标语言的文化习惯。分句法是将原文的一个简单句拆分成两个或多个句子,而合句法则相反,它将...

    pcfg句法分析

    而`PcfgParser`可能是一个实现PCFG句法分析的程序或库,它能够读取输入规则并进行句法分析,输出句法树。 在实践中,利用PCFG进行句法分析通常涉及以下步骤: 1. **构建PCFG模型**:定义非终结符、终结符、产生规则...

    空间句法教程

    西方建筑师在设计建筑时,会详细定义每个空间的使用功能,但实际使用时往往会出现与设计意图不符的情况,这就促使建筑师去寻找背后的原因。空间句法的理论基础就是从这种实践中发展起来的,其认为空间的功能性质是由...

    句法分析前沿动态综述

    【句法分析】是自然语言处理(NLP)的核心任务之一,主要目的是解析输入的文本句子,揭示出其中的句法结构,以便更好地理解和处理自然语言。句法分析分为两个主要类型:【成分句法分析】和【依存句法分析】。前者...

Global site tag (gtag.js) - Google Analytics