PHP语法简介:PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。
PHP 是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
PHP 独特的语法混合了C、Java、Perl 以及PHP 自创新的语法。
它可以比CGI 或者Perl 更快速的执行动态网页。
PHP语法与C最大的不同之处在于PHP重实用,而C重原理。
PHP的创始人是为了更新自己的主页而设计PHP的,不是像C的创始人那样为了开发操作系统,这是两者语法风格不同的根本原因。
重点:PHP的基本语法:数据类型、常量、变量、运算符与表达式、流程控制、函数、数组。
1、PHP的数据类型不管常量还是变量都不需要先定义后使用(类中的变量除外),PHP根据第一次赋值的情况自动决定数据类型。
PHP的基本变量类型有整型(Integer)、浮点型(Float)、字符串(String)(这是C 没有的,但C++有String类)以及布尔型(Boolean)(C没有,但是C++有)。
构造类型有数组和对象。
此外还有两个特殊类型:空值(NULL)(C也有)和资源(Resource)。
2、定义常量用define函数来定义define函数原型:bool define(string name,value,[,bool case_insensitive])第三个参数如果是TRUE,则表示常量名是大小写不敏感的,反之就是敏感的,默认是敏感的。
【例】复制PHP内容到剪贴板PHP代码:<?phpdefine(“C1”,”Hello PHP World!”);echo C1;?>运行结果:输出常量C1的值(Hello PHP World!)。
内容解释和补充:① <?php和?>是PHP代码的定界符,将PHP代码同HTML代码区分出来。
② PHP代码的语句以分号结束③ PHP支持C和Unix风格的注释方式:/* C风格多行注释 */// C风格单行注释# Unix风格单行注释④ echo就相当于C的printf或C++的cout⑤ PHP也支持‘\n’作为换行符,但是它的含义仅仅相当于在HTML里敲个回车,浏览器里看还是在一行上的。
3、定义变量变量名前都要带个$不用担心自定义变量名同PHP关键字冲突,可以定义一个变量叫$if,$for等。
但不推荐这么做。
变量名大小写敏感,并且命名方式遵循C标识符的命名原则。
【例】复制PHP内容到剪贴板PHP代码:<?php$var1=100;$var2=&$var1;$var2=200;echo $var1.”<br>”;echo $var2;?>运行结果:输出两个200,分别是$var1和 $var2的值。
内容解释和补充:①输出的时候为了清楚加了个换行符,PHP里句点(.)是字符串的连接符。
如果你在把上面的echo语句写成:echo “The value of $var1 is ”.$var1.”<br>”;那么你得到的输出将是:The value of 200 is 200② PHP在使用双引号作为字符串的定界符时,会自动把变量名替换成相应的值。
如果你想保持变量名原样输出,那么可以用单引号做字符串的定界符。
③语句$var2=&$var1;中的&符号的含义是将变量名$var2也指向$var1所在的存储空间。
$var2并不是一个新变量,而是$var1的另一个名字,它们对应的是同一段内存空间,不管使用谁都是访问的同一个变量,$var2就叫做对$var1的引用。
变量作用域【例】复制PHP内容到剪贴板PHP代码:<?php$a=1;function func(){echo "The value of a is:".$a;}func();?>【例】复制PHP内容到剪贴板PHP代码:<?php$a="newname";$$a="content"; //newname本是$a的值,但是$$a的含义是以$a的值为名的变echo $newname; //$$a等价于 $newnameecho $a;?>4、运算符和表达式PHP在运算符和表达式方面和C极其类似,有算术、逻辑、关系、位运算符及相应的表达式,也有条件运算符(:?)及其表达式,同样还是我们开始提到的那个思想,实用为上,很多限制被取消了,相对较宽松。
【例】复制PHP内容到剪贴板PHP代码:<?php$a="1";$b=1;if ($a==$b) echo "Equal!";else echo "Not Euqal!";?>运行结果:“Equal!”内容解释和补充:① PHP将字符串转换为数值时会自动截取全部它能理解为数值的部分②允许跨越数据类型的比较③想严格比较两个变量,PHP提供了一对特殊的运算符:全等(===)和非全等(!==)。
只有当值相当且数据类型相同时,才叫全等,两者有一不符,则非全等。
此时,即使1与1.0也是非全等的。
④运算符有优先级和结合性的概念4、流程控制1)switch case语句中case后面可以写任意表达式。
C只能是常量表达式。
2)if elseif else结构中间的else和if可以连在一起写。
3)PHP有一个独特的循环结构foreach,是专门为数组遍历准备的。
6、函数函数定义的一般形式是:function 函数名($参数1,$参数2,……,$参数n){函数体return 语句返回值}函数可以嵌套定义。
引用引用就是给变量取个小名(专业的话叫别名),即两个或多个变量名对应同一变量存储空间。
这一概念用在函数参数上特别有用,我们知道实参与形参的结合是单向值传递,即实参将它的值复制给形参,而形参变量在函数体中可能被改变,但由于形参变量会在函数返回时被撤销,所以形参不能将改变了的值传回给实参。
这一机制保证了函数只能有一个返回值。
当需要返回多个值的时候,我们可以使用引用做形参,这相当于把实参的地址传递给函数,函数对这个地址上的数据进行操作,当然就可以把改变保留下来。
引用的概念是C++里增加的,PHP的函数也支持引用做形参。
只要把C++里引用做参数的概念理解清楚了,在PHP 里是完全一样的。
PHP有巨大的函数库,比如关于时间的函数就有一大堆。
7、数组PHP的数组很像数学概念中的“集合”。
PHP的数组就是把一堆数据(什么类型都行)放在一起。
很像C的结构体,比结构体还灵活,它可以自动增减数据元素。
PHP数组的定义:通过array函数实现,一般形式为:$数组名=array(键名=>数据, 键名=>数据, ……, 键名=>数据);这里的键名在C中叫下标,在PHP里键名非常人性化。
对应的数据如果存储的是姓名,键名就可以叫name,是成绩,就可以叫score,当然你如果想用整数也可以,随你的便。
如果你懒得在定义数组时指定键名,可以这样写:$数组名=array(数据1, 数据2, ……, 数据n);这时候PHP会按照C语言的方式按数据的先后顺序从0开始自动赋予整型键名。
PHP提供了一个特别方便的显示数组全部元素的函数print_r【例】复制PHP内容到剪贴板PHP代码:<?php$arr1=array(100,200,300,400);$arr2=array("num"=>100,"name"=>"Liuxy","score"=>98);print_r($arr1);echo "<br>";print_r($arr2);?>输出结果:Array ( [0] => 100 [1] => 200 [2] => 300 [3] => 400 )Array ( [num] => 100 [name] => Liuxy [score] => 98 )定义二维数组。
可以嵌套地使用array函数。
【例】复制PHP内容到剪贴板PHP代码:$arr=array("row1"=>array(100,200,300,400),"row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98));PHP数组元素的访问,是数组名[键名]的形式。
PHP数组的遍历:通过foreach语句实现,foreach语句格式如下:foreach (数组名 as 变量名) 数据元素处理语句;翻译成C语言就是:for (i=0;i<n; i++){变量名=a;其他包含“变量名”的处理语句} foreach等价于前面的 for (i=0;i<n; i++)as等价于“变量名”与a之间的等号【例】复制PHP内容到剪贴板PHP代码:<?php$arr=array(1,2,3,4,5,6);foreach ($arr as $value ) echo ”$value<br>”;?>输出结果:只有数值。
如果还想把对应的键名也同时输出出来,可以用这样的形式:foreach ($arr as $key=>$value) echo “键名为$key的元素值为$value”;遍历二维数组:在C中我们一般用二重for循环,PHP中的foreach也可以嵌套使用。
【例】复制PHP内容到剪贴板PHP代码:<?php$arr=array("row1"=>array(100,200,300,400),"row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98));foreach ($arr as $key=>$value){echo "$key=>$value";echo "<br>";foreach ($value as $k=>$var) echo "$k=>$var<br>";}?>PHP的数组元素是可以动态增长的。