php的语法和c有什么区别
语法上的区别:1、PHP使用define函数来定义常量,c语言不是;2、php的所有的变量名前都要带个“$”,c语言不用;3、PHP不管常量还是变量都不需要先定义后使用(类中的变量除外)。
本教程操作环境:windows7系统、PHP7.1&&c99版,DELL G3电脑
语法上,php和C语言的区别
常量
在PHP中定义常量的方式在学习C的人看来有点不可思议,竟然是用一个define函数实现的,PHP的函数实在是太厉害了,后面我们会看到定义数组也是由函数完成的,我们真得感谢PHP无比丰富的函数库,它们成就了PHP的易用和强大。
define函数原型:bool define(string name,value,[,bool case_insensitive])
第三个参数如果是TRUE,则表示常量名是大小写不敏感的,反之就是敏感的,默认是敏感的。我们还是遵照习惯,保持常量名称大小写敏感吧。
例:
<?php define(“C1”,”Hello PHP World!”); echo C1; ?>
以上代码的运行结果是输出常量C1的值(Hello PHP World!)。
这里顺便介绍一下,<?php
和?>
是PHP代码的定界符,将PHP代码同HTML代码区分出来,PHP代码的语句以分号结束,这是我们习惯的,另外PHP的注释符号也与C一样,你该知道的,我就不说了……这个echo就相当于C的printf或C++的cout,但是严格地说不是格式化的输出,要想格式化也很容易,你把HTML代码写进去就行了,比如你要输出结束后换行,那你就写成define(“C1”,”Hello PHP World!<br>”);
好了。注意,PHP也支持‘\n’作为换行符,但是它的含义仅仅相当于在HTML里敲个回车,浏览器里看还是在一行上的。
变量
除了不用定义,C语言用户最不习惯的就是所有的变量名前都要带个$,你可能会抱怨PHP的设计者太财迷了,但抱怨完了你还得这么写,写PHP程序,Shift键的使用率陡增!我突然发现一个这样做的好处是:常量不带$,因此常量与变量的区分变得很明显,更重要的是,你再也不用担心自定义变量名同PHP关键字冲突了,你可以定义一个变量叫$if,$for等(当然,正式情况下还是不要这样做的好,过过瘾就行了)。
与C相同的是,PHP的变量名是大小写敏感的,并且命名方式遵循C标识符的命名原则,还记得吗?
如果你懂点C++,知道引用的概念,下面这段就可以跳过,只要记住PHP也支持引用。否则花点时间看下面这段或是去看看C++引用的概念也行。
<?php $var1=100; $var2=&$var1; $var2=200; echo $var1.”<br>”; echo $var2; ?>
这段代码的运行结果是输出两个200,分别是$var1和 $var2的值,输出的时候为了清楚加了个换行符,PHP里句点(.)是字符串的连接符。
为什么只给$var2赋了200,而$var1也变成了200呢,你还可以试试只改变$var1的值,你会发现这两个变量似乎被绑在一起了。其实语句$var2=&$var1;中的&符号的含义是将变量名$var2也指向$var1所在的存储空间,也就是说$var2并不是一个新变量,而是$var1的另一个名字,它们对应的是同一段内存空间,不管使用谁都是访问的同一个变量,$var2就叫做对$var1的引用。引用有什么好处?以后再说。C语言的基本概念(变量名、变量地址、变量值)清楚的话,理解起来应该没有什么困难,如果基本概念不清楚,还是先“温故”再“知新”吧。
顺便说一个有意思的事,如果你在把上面的echo语句写成:
echo “The value of $var1 is ”.$var1.”<br>”;
那么你得到的输出将是:
The value of 200 is 200
还记得吗,在初学C语言时你很可能犯过把变量名放在字符串里想输出它的值,结果得到的是变量名,而现在,你的“理想”实现了,而你却又不习惯了,呵呵。原来PHP在使用双引号作为字符串的定界符时,会自动把变量名替换成相应的值,这样的做法使得我们输出含变量的字符串时变得非常方便,一对双引号下来就可以了。如果你想保持变量名原样输出,那么可以用单引号做字符串的定界符(当然还有其它办法,你可以仔细研究一下PHP的字符串)。还是要感谢C的严格要求,如果C像PHP这样的话,我们恐怕到现在也搞不清变量名、变量值这些概念。
变量的作用域
PHP的变量作用域与C很类似,在此不准备多说。局部变量在所存在的函数内部有效,全局变量作用域是文件作用域(限于单个PHP文件),若局部变量同全局变量重名,同C的处理方式,全局的被屏蔽。稍微麻烦一点的是,要想在函数内访问全局变量,需使用global关键字声明,否则的话PHP就认为是一个与全局变量同名的局部变量。
<?php $a=1; function func() { echo "The value of a is:".$a; } func(); ?>
以上代码没有输出1,为什么呢?PHP把函数里的$a看作是一个全新的局部变量,此$a非彼$a(函数体外的全局变量),此$a未赋值,因此输出为空。如果我们要想在函数体内部访问全局变量$a的值,须在访问之前声明一句:global $a; 这样PHP就知道要访问的是全局变量$a了。
还有一种方法是利用PHP的系统数组$GLOBALS,该数组是PHP系统自动生成和维护的,它记录了所有全局变量。echo $GLOBALS[“a”];
即可输出其中$a的值。
PHP的静态变量仅在局部函数域中存在,同C是完全相同的。
PHP有一种特殊的动态变量,名字听起来很容易让人认为就是C语言的普通变量(动态的、局部的),但这个动态的含义有点特殊,它是指变量名可以动态赋予!也就是说,可以让应用程序的最终用户为变量指定名字!
<?php $a="newname"; a="content";//newname本是$a的值,但是a的含义是以$a的值为名的变量 echo $newname; //$$a等价于 $newname echo $a; ?>
运算符和表达式
PHP在运算符和表达式方面和C极其类似,有算术、逻辑、关系、位运算符及相应的表达式,也有条件运算符(:?)及其表达式,同样还是我们开始提到的那个思想,实用为上,很多限制被取消了,相对较宽松。举个例子:
<?php $a="1"; $b=1; if ($a==$b) echo "Equal!"; else echo "Not Euqal!"; ?>
按照C的思维方式来看,$a是字符,$b是整型,两者比较是字符的ASCII码值与整数比较,显然不等,而PHP运行结果却是“Equal!”,看到这里,是不是有点冲破封建大家庭的礼教与心上人私奔的感觉?呵呵,抑或是惊呼PHP无法无天?接下来还有让你目瞪口呆的,若$a="1e3"; $b=1000; 依然是“Equal!”,也就是说PHP在比较时能自动将字符串“按照人的理解方式”进行转换,1e3不就是科学计数法表示的1000吗?甚至$a=”1e3HelloWorld”;都会相等,PHP将字符串转换为数值时会自动截取全部它能理解为数值的部分!其实C也允许跨越数据类型的比较,比如字符型和整型比较,C也会自动转换类型,但它是“按照计算机的思维方式”转换的,因为字符在计算机里就是按照ASCII码存储的。
PHP的“人性化”也带来了麻烦,当我们想严格比较两个变量的时候怎么办呢?于是PHP提供了一对特殊的运算符:全等(===)和非全等(!==),只有当值相当且数据类型相同时,才叫全等,两者有一不符,则非全等。此时,即使1与1.0也是非全等的,原因你一定知道吧。如果你觉得只有这样才踏实,那么恭喜你,你已经被C洗脑了。
运算符有优先级和结合性的概念,这方面和C是类似的,你也许记不清所有的优先级关系,但是没关系,我们有括号呢。
PHP的数据类型
PHP与C的一个显著不同是:不管常量还是变量都不需要先定义后使用(类中的变量除外),PHP根据第一次赋值的情况自动决定数据类型。想想当年学习C语言的时候,我们曾感到先定义后使用很麻烦(但是“长大后”(我是指学会C后)都体会到了它的好处),常常忘记定义,而现在少了这条规矩,反而有点不适应了。
PHP的基本变量类型有整型(Integer)、浮点型(Float)、字符串(String)(这是C没有的,但C++有String类)以及布尔型(Boolean)(C没有,但是C++有)。构造类型有数组和对象。此外还有两个特殊类型:空值(NULL)(C也有)和资源(Resource)。
推荐学习:《PHP视频教程》
以上是php的语法和c有什么区别的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题











PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
