PHP语法基础
PHP标记风格
PHP表示符能够让web服务器识别PHP代码的开始和结束,两个标记之间的所有文本都会被解释为PHP,而标记之外的任何文本都会被认为普通的HTML,这就是PHP标识符的作用。
PHP标记符风格迥异,按照风格的不同可划分一下4种。
(1)标准风格(推荐使用)
<?php
echo"标准风格的PHP标记";
?>
(2)脚本风格(在XHTML或者XML推荐使用)
<script language="php">
echo '这是脚本风格的标记';
</script>
(3)简短风格(需配置文件php.int,不推荐使用)
<?
echo"简短风格标记";
?>
(4)ASP风格
<%
echo"ASP风格的标记";
%>
PHP注释应用
// 单行注释
/ ….. / 多行注释 (多行注释不允许嵌套操作)
3.shell风格注释
<?php
echo"这是shell脚本风格的注释"; #这里的内容是看不见的
?>
注意:在单行注释里不要出现“?>”的标志,因为解释器会认为php脚本结束,而去执行”?>”后面的代码。
PHP的数据类型
标量数据类型
标量数据类型是数据结构中最基本的单元,只能存储一个数据。
1.布尔型(boolean)
(1)布尔型保存了一个true值和false值,其中true和false是PHP的内部关键字。
(注意:在PHP中不是只有false值才为假的,在一些特殊情况在boolean值也被认为是false。比如:0,0.0,“0”,空字符串(“”),只声明没有赋值的数组等。)
(2)美元符号$是变量的标识符,所有变量都是以$开头的,无论是声明变量还是调用变量,都应该用$.
2.字符串型(string)
(1)字符串是连续的字符序列,由数字,字母和符号组成。字符串中的每个字符只占用一个字符。
(2)字符串的3种表示方法:单引号(’),双引号(”),界定符(<<<).
(3)单引号和双引号的区别在于:双引号中所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符输出
界定符在使用时后街一个标识符,然后是字符串,最后是同样的标识符结束字符串。格式如下:
$string=<<<str 要输出的字符串。 str
结束标识符必须单独另起一行,并不允许有空格。在标识符前后有其他符号或者字符,也会发生错误。
3.整型(interger)
整型数据类型只能包含整数。如果在八进制中出现了非法数字(8和9),则后面的数字会被忽略掉。
如果给定的值超过了int型所能表示的最大范围,将会被当做float型处理。
4.浮点型(float)
浮点型的书写格式:标准格式,科学计数法格式,
注意:浮点型的数值只是一个近似值,所以尽量避免浮点型数值之间的比较。
复合数据类型
1.数组(array)
数组中的每个数据称为一个元素,元素包括索引(键名)和值两个部分。元素的索引可以是由数字或字符串组成,元素的值可以是多种数据类型。
定义数组的语法格式如下:
$array=('value1','value2'....)
或
$array[key]='value'
或
$array=array(key1=>value1,key2=>value2….)
其中,参数key是数组元素的下标,value是数组下标所对应的元素
- 声明数组后,数组中的元素个数还可以自由更改。只要给数组赋值,数组就会自动增加长度。
2.对象(object)编程语言所应用到的方法有两种,面向对象和面向过程。在PHP中,用户可以自由的使用这两种方法。
特殊数据类型
1.资源(resource)
资源是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
在使用资源的时候,系统会自动启动垃圾回收机制,释放不在使用的资源,避免内存消耗殆尽。
2.空值(null)
空值表示没有为该变量设置任何值,空值不分大小写。
- 被赋予空值的情况有以下3种:还么有赋任何值,被赋值null,被unset()函数处理过的变量。
转换数据类型
(integer) - 转换成整型
(boolean) - 转换成布尔型
(float) - 转换成浮点型
(string) - 转换成字符串
(array) - 转换成数组
(object) - 转换成对象
注意:转换成boolean型时,null,0和未赋值的变量或者数组都会被转化成false,其他的为真;转换成整型时,布尔型的false转换为0,true转换为1,字符型如果以数字开头就截取到非数字位,否则输出0。
类型转换还可以通过settype()函数来完成
bool settype(mixed var,string type)
参数var为指定的变量,参数type为指定的类型。如果转换成功则返回true,否则返回false。
检测数据类型
PHP内置了检测数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某个类型,如果符合则返回true,否则返回false。
PHP的常量应用
声明和使用常量
在PHP中使用define()函数来定义常量,语法为:
define(string constant_name,mixed value,case_sensitive=true)
- constant_name:必选参数,常量名称,即标识符。
- value:必选参数,常量的值
- case_sensitive:可选参数,指定是否大小写敏感,设定为true表示不敏感。默认状态表示大小写敏感。
获取常量的方法:
使用常量名直接获取值
使用constant()函数
mixed constant(string constant_name);
成功返回true,否则返回false。
预定义常量
PHP可以使用预定义常量获取PHP中的信息。
注意:“ FILE ”和“ LINE ”中的“ __ ”是两条下划线,而不是一条“ _ ”。
实例代码:
<?php
echo"当前文件路径: ". __ FILE __ ;
echo"<br>当前行数: ".__ LINE __ ;
echo"<br>当前PHP版本信息:".PHP_VERSON;
echo"<br>当前操作系统:".PHP_OS;
?>
PHP的变量应用
变量声明及使用
(1)PHP中的变量名称用$和标识符表示,变量名是区分大小写的。
(2)PHP中的变量名称遵循以下约定:
在PHP中的变量名是区分大小写的。
变量名必须以美元符号($)开始。
变量名开头可以以下划线开始。
变量名不能以数字开头。
变量名可以包含一些扩展字符(如重音拉丁字母),但是不能包含非扩展字符(如汉字字符和汉字字母)。
(3)声明变量不可以与已有的变量重名。
(4)在程序中使用变量,需要为变量赋值。PHP中变量定义非常简单,灵活,在定义变量是,不需要指定变量的类型。,PHP自动通过对变量的赋值决定其类型,变量的赋值是通过使用赋值运算符(=)实现的,在定义变量是可以直接为变量赋值,此时称为变量的初始化。
(5)字符串的初始值为空值,整型的初始值为0,布尔型的初始值为false。
注意:在PHP中变量名称区别大小写,而函数名称不区分大小写。
(6)另外两种方式来给变量声明和赋值:
变量间的赋值、
引用赋值:指用不同的名字访问同一个变量内容,当改变其中的一个变量的值时,另一个也跟着发生变化。使用&符号来表示引用。
<?php $str = "是一家知名的软件公司"; $str2 = & $str; $str = "明日科技:$str"; echo $str2; ehco"<p>"; echo $str; ?>
运行结果:
引用和复制的区别:复制是将原变量内容复制下来,开辟一个新的内存空间保存,而引用则是给变量的内容再命一个名字。
变量作用域
1.全局变量:被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用关键字global声明,或者通过使用全局数组$globals进行访问。
2.局部变量:在函数内部定义的变量,只限于在函数内部使用,在函数外不能被使用。
3.静态变量:能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。使用静态变量时,先要用关键字static来声明变量,需要把关键字static放在定义的变量之前。(静态变量一旦被定义,在当前程序文件结束之前一直存在。)
声明格式:
static $str;
可变变量
可变变量是一种独特的变量,变量的名称并不是预先定义好的,而是动态地设置和使用。可变变量一般是指使用一个变量的值作为另一个变量的名称,所以可变变量又称为变量的变量。可变变量通过在一个变量名称前使用两个”$”符号实现。
例:
<?php
$change_name = "Look";
$Look = "美好的一天开始了!";
echo $change_name;
echo $$chang_name;
?>
预定义变量
通过预定义变量可以获取到用户会话,用户操作系统的环境和本地操作系统的环境等信息。
1.$ _ SERVER[‘SERVER _ ADDR’]:当前运行脚本所在服务器的IP地址。
2.$ _ SERVER[‘SERVER _ NAME’]:当前运行脚本所在服务器主机的名称。如果该脚本运行在一个虚拟主机上,则该名称是由那个虚拟主机所设置的值决定。
3.$ _ SERVER[‘REQUSEST _ METHOD’]:访问页面时的请求方法,如GET,HEAD,POST,PUT。如果请求的方式是HEAD,则PHP脚本将在送出去信息后终止(这意味着在产生任何输出后,不在有输出缓冲)
4.$ _ SERVER[‘REMOTE _ ADDR’]:正在浏览当前页面用户的IP地址。
5.$ _ SERVER[‘REMOTE _ HOST’]:正在浏览当前页面用户的主机名。反向域名解析基于该用户的REMOTE_ADDR
6.$ _ SERVER[‘REMOTE _ PORT’]:用户连接到服务器时所使用的端口。
7.$ _ SERVER[‘SCRIPT_FILENAME’]:当前执行脚本的绝对路径名。注意,如果脚本在CLI中被执行,作为相对路径,如file.php或者../file.php,$ _ SERVER[‘SCRIPT _ FILENAME’]将包含用户指定的相对路径。
8.$ _ SERVER[‘SERVER_PORT’]:
服务器所使用的端口,默认为80.如果使用SSL安全连接,则这个值为用户设置的HTTP端口。
9.$ _ SERVER[‘DOCUMENT_ROOT’]:当前运行脚本所在的文档根目录。在服务器配置文件中定义。
10.$ _ COOKIE:通过HTTPCookie传递到脚本的信息。这些cookie多数是由执行PHP脚本时通过setcookie()函数设置的。
11.$ _ SESSION:包含于所有会话变量有关的信息,$ _ SESSION变量主要应用于会话控制和页面之间值得传递。
12.$ _ POST:包含通过POST方法传递的参数的相关信息,主要用于获取通过POST方法提交的数据。
13.$ _GET:包含通过GET方法传递的参数的相关信息,主要用于获取通过GET方法提交的数据。
14.GLOBALS:由所有已定义的全局变量组成的数组。变量名就是该数组的索引。它可以称为所有超级变量的超级集合。
PHP运算符
算术运算符
算术运算符包括:+,-,*,/,%。
字符串运算符
字符串运算符只有一个,即英文的句号“.”,它将两个字符串连接起来,形成一个新的字符串。
赋值运算符
赋值(=),加(+=),减(-=),乘(*=),除(/=),连接字符(.=),取余数(%=)。
递增或递减运算符
1.前置递增运算符
前置递增运算符是指使用前置“++”运算符将变量加1再将值赋给原变量。
2.前置递减运算符
前置递减运算符是指使用前置“–”运算符将变量减1再将值赋给原变量。
3.后置递增运算符
后置递增运算符是指先返回变量的当前值,然后再使用后置“++”运算符将变量的当前值再加上1.
4.后置递减运算符
后置递减运算符是指先返回变量的当前值,然后再使用后置“–”运算符将变量的当前值再减去1.
位运算符
位运算符是指对二进制位从低到高对齐后进行运算。
&(按位于),|(按位或),^(按位异或),~(按位取反),<<(向左移位),>>(向右移位)。
逻辑运算符
&&或and(逻辑与),||或or(逻辑或),xor(逻辑异或),!(逻辑非)。
比较运算符
条件运算符
条件运算符用于根据一个表达式在两个表达式中选择一个,而不是用来两个语句或者程序中选择。条件运算符也称三目运算符,条件运算符的使用最好放在括号里。
运算符的优先顺序和结合规则
PHP函数
定义和调用函数
创建函数的基本语法:
function fun_name($str1,$str2,……$strn){
fun_body;
}
其中
- function:为声明自定义函数时必须使用到的关键字。
- fun_name:为自定义函数的名称
- $str1,$str2,……$strn:函数的参数
- fun_body:自定义函数的主体,是功能实现部分。
在函数间传递参数
1.按值传递方式
将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到实参,即函数返回后,实参的值不会改变。
2.按引用传递方式
按引用传递就是将实参的内存地址传递到形参中。这时,在函数内部的所有操作都会影响到实参的值,返回后,实参的值会发生变化。引用传递方式就是传值时在原基础上&号即可。
3.默认参数(可选参数)
可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空。
例:
<?php
function values($price,$tax=""){
$price=$price+($price*$tax);
ehco "价格:$price<br>";
}
value(100,0.36);
value(100);
?>
结果为:价格:136 价格:100
从函数中返回值
return将函数的值返回给函数的调用者,即将程序控制权返回到调用者的作用域。如果在全局作用域内使用return,那么将终止脚本的执行。
变量函数
函数的调用是通过改变变量名来实现的,通过在变量名后面加上一对小括号,PHP将自动寻找与变量名相同的函数,并且执行它。
对函数的引用
引用不仅用于普通变量,函数参数,也可作用于函数本身。对函数的引用,就是对函数返回结果的引用。
例:
<?php
function &example($tmp=0){
return $tmp;
}
$str = &example("YuanErHero");
echo ¥str."<p>";
?>
结果为:YuanErHero
取消引用
取消引用使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。
$math = &$num;
unset($math);
输出语句
应用print语句输出字符
print语句只能同时输出一个字符串,需要圆括号。
例:
<?php
print("helloworld");
$str="zhangewi"
print $str;
?>
应用ehco语句输出字符
1.echo直接将要输出的字符串或者变量跟在ehco后面,字符串或变量ehco之间以一个空格分隔。
语法:
echo "string arg1,string [arg2]……"
2.echo语句后面可以连续输出多个字符,它们之间以逗号分隔。
<?php
$mr = "asdfas";
$str = "asdfqwf";
echo $mr,$str;
?>
3.连续输出多个字符串,可以使用字符串运算符“.”将多个字符串连接成一个新型字符串输出。
<?php
$str1="一个人的快乐";
$str2="不是他拥有的多";
$str3="而是因为他计较的少";
echo &str1.",".$str2.",".$str3."。";
?>
结果为:一个人的快乐,不是因为他拥有的多,而是因为他计较的少。
4.echo语句后紧跟的参数应该是字符串类型,如果不是,PHP将自动将其进行转换,所以echo语句同样可以输出其他类型的数据。
应用printf语句格式化输出字符
语法:
int printf(string format[,nixed args[,mixed……]])
<?php
$string = 15;
printf("%c",$string);
$string ="zhangwei";
printf($string);
$string=1234.00;
printf("%0.2f",$string); //将整数转换成小数后有两位小数的浮点数
printf("%s",$string);
printf("%X",$string); //将整数转换成大写十六进制
?>
应用sprintf语句格式化输出字符
格式化字符串用于按一定的格式输出含有许多变量的文本,是最常用的一种操作,可以使用PHP的sprintf语句来完成格式化字符串的功能。
语法:
string sprintf(string format,mixed args……)
引用文件
应用include语句引用文件
使用include语句引用外部文件时,只有代码执行到include语句时才将外部文件引用进来并读取文件的内容,当所引用的外部文件发生错误是,系统只给出一个警告,而整个PHP文件则继续向下执行。
语法:
void include (string filename);
filename是指定的完整路径文件名。
应用require语句引用文件
实现对外部文件的引用,在PHP文件被执行前,PHP解析器会用被引用的文件的全部内容替换require语句,然后require语句之外的其他语句组成新的PHP文件,最后再按新PHP文件执行程序代码。
语法:
void require(string filename);
应用include_once语句引用文件
应用include_once语句会在导入文件前先检测该文件是否在该页面的其他部分被引用过,如果有,则不会重复引用该文件,程序只能引用一次。
语法:
void include_once(string filename);
应用require_once语句引用文件
应用require_once语句会在导入文件前先检测该文件是否在该页面的其他部分被引用过,如果有,则不会重复引用该文件,程序只能引用一次。
语法:
void require_once(string filename);
include语句和require语句的区别
在使用require语句调用文件时,如果调用的文件没找到,require语句会输出错误信息,并且立即终止脚本的处理,而include语句不会。
使用require语句调用文件时,只要程序一执行,就会立即调用外部文件;而通过include语句调用外部文件时,只有程序执行到该语句时,才会调用外部文件。
include_once语句和require_once语句的区别
include_once语句在脚本执行期间调用外部文件发生错误时,产生一个警告,而require_once语句则导致一个致命错误。