学习PHP语法.docx
- 文档编号:10172615
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:116
- 大小:196.92KB
学习PHP语法.docx
《学习PHP语法.docx》由会员分享,可在线阅读,更多相关《学习PHP语法.docx(116页珍藏版)》请在冰豆网上搜索。
学习PHP语法
Aaron工作室整理欢迎光临小屋
PHP程式設計2
PHP簡介2
PHP嵌入語法2
引用檔案語法2
程式註解2
PHP系統常數2
自定常數2
PHP的資料型態與變數2
integer與double2
string2
string轉換2
array2
多維array2
型態轉換2
變數的使用和視野2
與變數相關的函數2
運算符號2
流程控制2
if…else控制流程2
while迴圈2
dowhile迴圈2
for迴圈2
switchcase流程2
中斷語句—break與continue2
函數與物件2
函數2
物件2
NULL值或未定義值2
字串處理2
常規表示式2
常規樣式2
常規表示式函數2
檔案處理2
開啟檔案2
關閉檔案2
處理檔案2
其他常用的檔案處理函數2
從客戶端上傳檔案2
下載至客戶端2
PHP連線控管2
持續性連接資料庫2
建立MySQL使用者2
拒絕連接2
利用PHP連接MySQL2
PHP程序设计
PHP简介
PHP的全名为“PHP:
HypertextPreprocessor”,意思为“超文件前置处理器”,是一种用来产生HTML网页原始文件的中介程序及语言。
PHP是一种伺服端内嵌式HTML的应用程序(server-sideembeddedHTMLscriptinglanguage),类似IIS的ASP。
PHP的语法,基本上是混合了C/C++、Java、Perl和自创部份语法。
PHP不像用C或Perl写成的CGI程序,不是用来一大堆指令来输出HTML程序,而是直接可以在PHP和HTML间切换。
如以下是一个简单的PHP程序:
phpecho"Hi,I'maPHPscript!
";?
>
其执行时的结果如下画面所示:
PHP程序看起来和用于client端的JavaScript很相似,只不过,它是用于server端,我们可以利用它来连接数据库及其它网络资源。
当然,PHP可以产生含JavaScript的HTML网页。
PHP和webserver及client端浏览器(browser)的关系如下:
PHP是于主机端(Server端;服务端)执行的Script程序,如:
ASP也是一种Server端执行的Script程序。
而JavaScript或VBScript则是本地端或客户端(Client)执行的程序。
例如:
我们下达http:
//www.im.chu.edu.tw/~dtchang/index.php,若index.php这支PHP程序内含有JavaScript程序,则index.php会先于www.im.chu.edu.tw这部机器上执行,而且这部机器上必需安装一套WEBServer(网站服务器,如:
Apache)和可以分析和执行PHP的程序或套件。
WEBServer会把index.php传给PHP的解析和执行器执行,把index.php执行的结果以网页的方式回传给浏览器,而回传的网页中可能含有JavaScript程序,此时若有需要,则会透过浏览器于本地端(浏览器所在的这一部机器)上执行。
因此,WEB-Based的信息系统开发者必需了解的程序和工具相当的多,还好,一般而言都不会太复杂。
PHP嵌入语法
PHP的语法采用自由格式(freeformat),其程序常以
php和?
>括起来,或者是以
和?
>括来,若经设定也可以用<%和%>括起来。
其写法有如下数种方式:
☐
php程序代码?
>
例:
phpecho(“Helloworld!
”);?
>
此种写法最为常见。
而echo(“Helloworld!
”);可以写成echo“Helloworld!
”;看起来较像是指令。
echo()的功能为show出一段讯息。
☐
程序代码?
>
例:
echo(“Helloworld!
”);?
>
这种写法是上一种写法的简写方式,一般而言,是需要做config设定。
☐
程序代码
例:
:
echo“Helloworld!
”;
这种写法很像写JavaScript,但很少见。
☐<%程序代码%>
例:
<%echo“Helloworld”;%>
注:
当asp标签(asptags)有设定时才可以支持ASP-style的写法。
这些不同的写法执行时都会显示一行Helloworld,参考如下画面:
引用档案语法
我们可使用require()或include()来把一个档案的内容引入目前的档案中(或执行位置),以下是require()和include()的使用说明:
☐require(“檔名”);
文件名所指的程序在网页程序执行前,即加载成为网页程序的一部份;通常放于程序的开头处,应用于程序一定要引入某一个档的时候,换言之,require的档名是不可以用字符串变量来临时决定要加载那个档案。
require()有点像C语言的#include,不管require()会不会被执行到它都会被加载。
假如我们想要的是有条件的引用档案,则应使用include()。
关于include()部份说明于下一段文字。
require()不是函数,因此不会有所谓的传回值,也只会被载入一次。
例:
require(“config.inc.php”);
☐include(“檔名”);
文件名所指的程序在读到include这行指令时才会加载;通常用在程序的流程当中,尤其是选择性的引用时,换言之,include的文件名可以用字符串变量来临时决定要加载那个档案。
例:
include(“config.inc.php”);
但是要特别注意到使用条件是引入时include()一定要用括号{}括起来,否则会产生错误!
如下是会产生错的:
if($condition)include($file_A);
elseinclude($file_B);
以下才是正确的:
if($condition){include($file_A);}
else{include($file_B);}
使用include()时,引入档案中可以有return值。
如test.php3和main.php3位于同一个目录,test.php3内容为:
php
echo"Beforethereturn
\n";
if
(1)
{
return27;
}
echo"Afterthereturn
\n";
?
>
而main.php3的内容为:
php
echo"Beforeinmain.php3
\n";
$retval=include('test.php3');
echo"Filereturned:
'$retval'
\n";
echo"Backinmain.php3
\n";
?
>
则于PHP4中执行的结果为:
Beforeinmain.php3
Beforethereturn
Filereturned:
'27'
Backinmain.php3
【注意】:
执行到return处为止。
然而在PHP3中这是不合法的,PHP3中include()是不能传回数值的。
假如把main.php3改成:
php
echo"Beforeinmain.php3
\n";
include('test.php3');
echo"Backinmain.php3
\n";
?
>
则PHP3会产生parseerror(剖析错误,由语法或打字错误所产生):
Beforeinmain.php3
Beforethereturn
27Backinmain.php3
Parseerror:
parseerrorin.....
这是因为return指令并不是位于函数的括号中,而是位于非函数的括号中,只要把return移到括号之外即可。
【注意】:
当PHP执行require()和include()时会由PHP模式转为HTML模式,档案引入完成时,再转回PHP模式。
因此,若require()或include()的档案中有使用PHP语法,则需使用合法的PHP开始和结束的标记(TAG)。
假如main.php3改成:
php
echo"Beforeinmain.php3
\n";
require('test.php3');
echo"Backinmain.php3
\n";
?
>
其结果为:
Beforeinmain.php3
Beforethereturn
Afterthereturn
Backinmain.php3
【注意】:
和用include()的结果不同!
程序批注
☐可以使用标准C语言多行的批注
/*批注文字*/
☐也可以使用标准C++语言单行的批注
//批注文字
PHP系统常数
PHP的系统常数和内容,如下表所示:
系统常数名称
内容的定义
__FILE__
目前被解析的PHP程序的文件名,若目前被解析的程序是include()或require()中的程序则改为本子程序的档名,而不是父程序的文件名
__LINE__
本__LINE__出现处位于PHP程序的行号,即本行为第几行。
若目前被解析的程序是include()或require()中的程序则改为本子程序的行号
PHP_VERSION
PHP的版本代号,如:
“3.0.8-dev”
PHP_OS
执行PHP程序的OS别,如:
“WIN32”,“Linux”
TRUE
true真值
FALSE
false假值
E_ERROR
mask值为1,发生错误时,用来设定error_reporting()的层级。
通常ERROR发生时,程序会中断并产生错误的讯息报告
E_WARNING
mask值为2,同上,用于WARNING警告发生时。
程序不会中断,可帮助debug(除错)
E_PARSE
mask值为4,同上,用于分析语法错误发生时
E_NOTICE
mask值为8,同上,不寻常的讯息发生时,如:
存取未定义的变量、档案,大都用于除错,此时任何可能的错误皆会报告
E_CORE_ERROR
mask值为16,同上,PHP核心程序产生错误时
E_CORE_WARNING
mask值为32,同上,PHP核心程序产生警告时
E_ALL
所有可能的错误1+2+4+8+16+32
系统一般预设的错误层次为E_ALL&~E_NOTICE,即显示所有的错误,但不会出现如变量未定义这一种错误讯息,必竟那可能是正常的,因为PHP允许变量事先不存在。
这项设定设定于php.ini这个档案中。
如下所示:
error_report=E_ALL&~E_NOTICE
这一行就是错误的层次设定。
例子:
(php.ini中的error_report=E_ALL)
php
//这是php系统常数的应用例子.
echo("Helloworld!
\n");
echo("本PHP版本为".PHP_VERSION."执行于".PHP_OS."操作系统.
\n");
echo"本PHP档名为".__FILE__."
\n";
//注:
文字字符串可用"."这个符号串接
echo"现在所在的行号为:
".__LINE__."
\n";
if(error_reporting(E_ERROR|E_WARNING|E_PARSE|E_NOTICE))
echo("设定成功!
\n");
echo"下一行会产生E_NOTICE的错误.
\n";
stat("hello.php3");
echo"Continue...
\n";
?
>
执行后的HTML原始码为:
Content-Type:
text/html
X-Powered-By:
PHP/4.0b4pl1
Content-Type:
text/html
Helloworld!
本PHP版本为4.0b4pl1执行于WIN32操作系统.
本PHP档名为C:
\WINDOWS\TEMP\tmpF3B1.TMP
现在所在的行号为:
7
设定成功!
下一行会产生E_NOTICE的错误.
Warning:
statfailedforhello.php3(errno=2-Nosuchfileordirectory)inC:
\WINDOWS\TEMP\tmpF3B1.TMPonline11
Continue...
透过Navigator观看的结果为:
Content-Type:
text/htmlX-Powered-By:
PHP/4.0b4pl1Content-Type:
text/htmlHelloworld!
本PHP版本为4.0b4pl1执行于WIN32操作系统.
本PHP档名为C:
\php\PHPEd\NONAME1.php3
现在所在的行号为:
7
设定成功!
下一行会产生E_NOTICE的错误.
Warning:
statfailedforhello.php3(errno=2-Nosuchfileordirectory)in
C:
\php\PHPEd\NONAME1.php3online11
Continue...
假如error_report=E_ALL&~E_NOTICE则不会出现Warning。
自定常数
当程序设计写作时,若觉得内定系统常数不够用,此时,我们可用define()来自行定义程序所需的常数。
其应用和定义的方式如下:
define(“常数名称”,“常数值”);
例:
php
//这是php自定常数的用法例子
define("MY_VER","xwin3.1.2");
echo"MY_VER=".MY_VER."
\n";
//移去下一行的批注符号后会产生"parseerror"
//常数值是无法改变的.
//MY_VER="xwin3.2.2";
//下一行将不会产生错误,也不会重新定义常数之值
define("MY_VER","newvalue");
echo"MY_VER=".MY_VER."
\n";
?
>
执行画面如下:
PHP的数据型态与变量
PHP支持的数据型态不多,有:
string(字符串),integer(整数),double(双浮点数),array(数组)和object(对象)等等。
变量事先不需要宣告,可以直接使用,变量的名称前面要加上$以作为识别,变量的名称有大小写之分(注:
PHP的变量用$符号开头,是不是很棒?
很多人最喜欢的东西不就是这个?
)。
若被引用的变量事先没数据,则设为null值(我们可以用empty()或isset()来检验它)。
而数据的型态,基本上,并不是由程序设计师所决定的,而是于执行时期由PHP依照该变量的内容(context)来决定的。
假如我们想要强迫某变量为某特定的数据型态,则可以用settype()或cast来改变。
如下例:
$a=10;//integer
$b=(double)$a;//force$btodouble
可以用的cast有(int)、(integer)、(real)、(double)、(float)、(string)、(array)和(object)。
而利用settype()函数则是另一种方式。
settype()函数的雏型为:
intsettype(stringvar,stringtype);
其中var为变量的名称,而type型态可为:
“integer”、“string”、“double”、“array”和“object”。
若转换成功则传回true,失败则传回false。
我们可用gettype()来取得变量的数据型态。
以下是转换的例子:
$a=10;
$b=(double)$a;
$c=(string)$a;
$d=(array)$a;
$e=(object)$a;
echo"a=".$a.",typeais".gettype($a)."
\n";
echo"b=".$b.",typebis".gettype($b)."
\n";
echo"c=".$c.",typecis".gettype($c)."
\n";
echo"d=".$d[0].",typedis".gettype($d)."
\n";
echo"e=".$e->scalar.",typeeis".gettype($e)."
\n";
?
>
注意:
“.”为串接字符串文字的运算子符号。
其执行结果如下:
a=10,typeaisinteger
b=10,typebisdouble
c=10,typecisstring
d=10,typedisarray
e=10,typeeisobject
【注意】:
数值或字符串转换成array时,自动设索引值为0之元素,而数值或字符串转换成object时则变量值自动变成object的属性值(attribute),而且以scalar为属性名(attributename)。
在PHP3.x版中只支持数值设定(assignbyvalue),换言之,当我们把变量设定为某式子的结果时,表示式最终的结果值会被复制到该变量。
因此如下的式子:
$a=$b;//将$a之值设为$b之值
$b++;//将$b增加1
当$b改变时并不会影响到$a。
在PHP4.x版则新增参考设定(assignbyreference)的语法。
换言之,使用参考设定时,新的变量会参考旧变量,也就是说新变量是旧变量的别名(alias)或指向(pointto)该变量。
此时,改变新变量的值也会异动旧变量的值,反之亦然。
要使用参考设定则加&(ampersand)这个符号于被参考的变量之前即可,这个用法和C++的参考(reference)是一样的。
如:
php
$name='Bob';//Assignthevalue'Bob'to$name(assignvalue)
$bar=&$name;//Reference$nameas$bar.(assignreference)
$bar="Mynameis$bar";//Alter$bar...
echo$name;//$nameisalteredtoo.
echo$bar;
?
>
其执行的结果画面为:
注意:
文字字符串在PHP中可用单引号或双引号括起来,但其效果是不一样的,如:
$name=“blob”;
$a=“$name”;
$b=‘$name’;
结果$a的内容为“blob”这个文字,而$b的内容则为“$name”这个文字。
换言之,用单引号括起来的字符串中的任何文字皆不会被改变,但用双引号括起来的文字中若含变量名称,则会以变量之值取代之。
integer与double
integer(整数)和C/C++一样有多种表示法,以0开头者表示为八进位,而0x或0X则表示为十六进制。
而integer的有效范围在32位的操作系统中为正负21亿左右(-2,147,483,648~+2,147,483,647)。
double(浮点数)则是含有小数点的数值,可用科学表示法表示,如:
12.34,-1.23,2.34+E30,-1.23e-20,有效范围为1.7E-308~1.7E+308。
设定数值的例子如下:
php
$a=1234;#正数(十进制)
$a=-123;#负数(十进制)
$a=0123;#八进位(十进制值为83)
$a=0x12;#十六进制(十进制值为18)
$d=1.23;#浮点数
$d=-1.24E+20;#浮点数
?
>
注:
PHP允许用#做为批注文字的开头。
string
string(字符串)可以为单一字符或多字符的字符串。
脱离码(Escapesequence)的用法和C/C++一样,如:
\”,\\,\n,\r,\t…等等。
字符串与变量间可用“.”串接。
字符串的标示方法有两种:
(一)用双引号括起来、
(二)用单引号括起来。
用双引号括起来的字符串中若含有变量名,则该变量会被展开(expand),而用单引号括起来者则否。
用双引号括起来的字符串可以使用脱离码(Escapesequence),其规则和C/C++及perl一样。
脱离码如下:
脱离码
意义
\n
newline(新行)
\r
carriagereturn(归位)
\t
horizontaltab(水平定位点)
\\
blackslash(反斜线)
\$
dollarsign(钱号)
\”
double-quote(双引号)
\[0-7]{1,3}
octalnotation(最多三位的八进位),如:
\077
\x[0-9A-Fa-f]{1,2}
hexadecimalnotation(最多二位的十六住位数),如:
\x8F
但若用单引号则只认得‘\\’(反斜线)及‘\’’(单引号)两种特殊的脱离码,其它的一律不做修改。
另外,PHP(PHP4.0以上)也提供了一种类似shell的字符串输入写法docsyntax(<<<),使用docsyntax必须宣告分隔标识符(delimit),而且必须紧跟在后,结束时必须是该行的最前头。
如以下用EOD作为分隔标识符:
php
$str=<< Exampleofstring spanningmultiplelines usingheredocsyntax. EOD; echo$str; ? > 换言之,EOD...EOD之间的文字是一串输入之文字,其执行的结果画面如下: 在PHP中字符串可以用点(dot‘.’)串接字符串或变量,但不可以用‘+’号。 字符串中的字符可以用数组索引的方式运作(如C/C++),如: $str=“Hello”; 则$str[0]为第一个字符H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 PHP 语法