首页 电脑 电脑学堂 查看内容

PHP语法基础讲解

2009-10-21 10:06 566 0

摘要: PHP与C语言也有一些差别,或者说在某种程度上可能比C语言更为灵活。在C语言中,变量要先定义,才能使用。而PHP中变量则不需崐事先定义,直接使用即可。对于变量的类型,在赋值时自动生成。PHP变量的类型...
关键词: 变量 PHP Cookie 运算符 一个 语句 函数 表单 程序 条件

PHP与C语言也有一些差别,或者说在某种程度上可能比C语言更为灵活。在C语言中,变量要先定义,才能使用。而PHP中变量则不需崐事先定义,直接使用即可。对于变量的类型,在赋值时自动生成。PHP变量的类型分为:整数(int)、双精度型(double)、字符串(string)、崐数组(array)、对象(object)。 整数大小超出其范围后,自动转化为双精度型,其值范围如下表: ┌─────┬─────┬──────┬────────────┐ │ 声明类型 │长度(位)│长度(字节)│ 值的范围 │ ├─────┼─────┼──────┼────────────┤ │ int │ 32 │ 4 │-2147483647~2147483647 │ ├─────┼─────┼──────┼────────────┤ │ double │ 32 │ 4 │ 1.7E-308~1.7E+308 │ └─────┴─────┴──────┴────────────┘ 字符串,通常用""(双引号)表示。也可用''(单引号)表示,如下: $a="abc"; $b="abc$a"; $c='abc$a'; $d="\"cde\""; $e='"cde"'; PHP中的各种变量均在变量名前加上“$”以示区别。 注意,$b的内容为abcabc,$c的内容为abc$a,$d的内容为"cde",$e的内容也为"cde"。可以看出,双引号中的内容中的变量名会被替代崐,而单引号中的则不会。双引号中的内容需转义,如$应用\$表示,而单引号中的则不用。 PHP中的数组语法为: 数组名[索引] 索引可为数字,也可为文字。但不建议使用文字,因为意义不大。对于数组也比其它语言灵活如下例: <?php $names[]=100; $names[]=200; $names[]="hi,how are you"; $names[]=98.5; $names[]=1.7E+23; $num=count($names); for ($i=0;$i<=$num;$i++){ echo "$names[$i]"; } ?>   可看出,一个数组中的元素不一定为同一类型,这就是PHP数组的“活”处。   使用对象,可使编程者更易于维护,也使程序更为易读。较其它语言,PHP可简单多了,它只有类别(class)、方法(method)、属性(attr崐ibute)及扩展(extendsions)等。 软件开发网 www.mscto.com 前文谈的只是PHP的数据类型,所谓“磨刀不误砍柴功”,打好PHP基础才能更好地学好PHP编程。   PHP中的表达式与运算符与C语言的差别不大,现将其列表于下: ┌─────┬─────────┬──────────┐ │ 符 号 │ 运算符 │ 范 例 │ ├─────┼─────────┼──────────┤ │ + │ 加法 │ $a+$b │ ├─────┼─────────┼──────────┤ │ - │ 减法 │ $a-$b │ ├─────┼─────────┼──────────┤ │ * │ 乘法 │ $a*$b │ ├─────┼─────────┼──────────┤ │ / │ 除法 │ $a/$b │ ├─────┼─────────┼──────────┤ │ % │ 取余数 │ $a%$b │ ├─────┼─────────┼──────────┤ │ ++ │ 递增 │ $a++或++$a │ ├─────┼─────────┼──────────┤ │ -- │ 递减 │ $a--或--$a │ ├─────┼─────────┼──────────┤ │ == │ 等于 │ $a==10 │ ├─────┼─────────┼──────────┤ │ === │ 绝等于 │ $a===10 │ ├─────┼─────────┼──────────┤ │ != │ 不等于 │ $a!=10 │ ├─────┼─────────┼──────────┤ │ < │ 小于 │ $a<9 │ ├─────┼─────────┼──────────┤ │ > │ 大于 │ $a>8 │ ├─────┼─────────┼──────────┤ │ <= │ 小于等于 │ $a<=10 │ ├─────┼─────────┼──────────┤ │ >= │ 大于等于 │ $a>=1 │ ├─────┼─────────┼──────────┤ │ = │ 相等赋值运算符 │ $a=0 │ ├─────┼─────────┼──────────┤ │ += │ 加法指定运算符 │ $a+=5 │ ├─────┼─────────┼──────────┤ │ -= │ 减法指定运算符 │ $a-=1 │ ├─────┼─────────┼──────────┤ │ *= │ 乘法指定运算符 │ $a*=2 │ ├─────┼─────────┼──────────┤ │ /= │ 除法指定运算符 │ $a/=5 │ ├─────┼─────────┼──────────┤ │ %= │ 余数指定运算符 │ $a%=7 │ ├─────┼─────────┼──────────┤ │ .= │ 字符串指定运算符│ $a.="hello" │ ├─────┼─────────┼──────────┤ │ & │ 与 │ $a&$b │ ├─────┼─────────┼──────────┤ │ | │ 或 │ $a|$b │ ├─────┼─────────┼──────────┤ │ ^ │ Xor │ $a^$b │ ├─────┼─────────┼──────────┤ │ ~ │ 非 │~$a(取1的补码 )│ ├─────┼─────────┼──────────┤ │ << │ 向左移位 │ $a<<$b │ ├─────┼─────────┼──────────┤ │ >> │ 向右移位 │ $a>>$b │ ├─────┼─────────┼──────────┤ │and或&& │ 与 │$a and $b或$a&&$b │ ├─────┼─────────┼──────────┤ │or或|| │ 或 │$a or $b或$a||$b │ ├─────┼─────────┼──────────┤ │xor │ Xor │ $a xor $b │ ├─────┼─────────┼──────────┤ │ ! │ 非 │ !$a │ └─────┴─────────┴──────────┘ ┌───┬────────────┐ │符号 │ 意义说明 │ ├───┼────────────┤ │ $ │变量 │ ├───┼────────────┤ │ & │变量的指针(加在变量前)│ ├───┼────────────┤ │-> │对象的方法或属性 │ ├───┼────────────┤ │=> │数组的元素值 │ ├───┼────────────┤ │? : │三元运算符 │ └───┴────────────┘ 同C语言的比较一下吧。其中只是多了个“.”这一个运算符。它的作用是使两个字符串相连,如下例,显示结果为hello,my baby. <?php $a="hello,"; $b="my baby."; echo $a.$b; ?> 还有一个符号也使PHP的功能强大了。这就是“$”。它是用于变量之前的,表示这是个变量,如$A,$b等。那它的作用又强在哪呢?这崐就是变量的变量。 如下例: <?php $a="go"; $$a="here"; echo $a; echo $$a; echo $go; ?> 显示结果为: go here here 其实,在一个变量前加一个“$”,就是把这个变量的内容作为了一个新的变量名。这是PHP所特有的,有时可使程序简单化。 上一文《谈谈PHP语法》已谈了PHP的数据类型和表达式。现在,让我们来看看PHP的变量与常数。 让我们先看一例吧。 文件:test.php //这是一种单行注释方法 #这是另一种单行注释方法 /*这是一种多行注释的方法 以下让我们看看例了吧*/ funtion display($file,$line) { global $message; echo "FILE:$file"; echo "LINE:$line"; echo "Message:$message"; } $message="这是一个例程。"; display(_FILE_,_LINE_); ?> 显示结果为: text.php 15 这是一个例程 上例中,function 是定义一个自定义函数。其后的两个变量$file和$line是两个局域变量,它们只在函数体中起作用,与函数体外的变崐量互不干扰,如果在函数体外还有$file或$line的话,两个$file和两个$line的值是不一定会相同的。_FILE_和_LINE_是两个常量,它们的崐值是早已定好了的。_FILE_为本文件的文件名,_LINE_为执行行所在的行号。在函数体内还有一句为 global $message; 它的作用是使全崐局变量$message能作用到函数体中,这句还可写成$GLOBAL["message"]; 对于GET、POST和Cookie等机制产生的信息,PHP会自动地将其视为PHP的变量。这样,使提交表单的信息处理显地是格外的轻松。如下: 文件:form.html <html><head><title></title></head> <body> <form action="deal.php"> 用户名:<input type="text" name="uname" size=20><br> <input type="submit" value="OK"> </form> </body></html> 软件开发网 www.mscto.com 文件:deal.php <?php echo "你的用户名为:$uname"; ?> 以上程序会要求用户输入一个用户名,提交表单后,后回用户名确认信息。可看出,表单中的uname已成为了deal.php程序中的$uname变崐量。简单吧。:-) 下面看看PHP的基本流程控制: if…else…Elseif 语法一: if (条件) { 语句体 } 语法二: if (条件) { 语句体一 }else{ 语句体二 } 语法三: if (条件1) { 语句体一 }elseif(条件2) { 语句体二 }else{ 语句体三 } 我们把上面的deal.php程序改为: <?php if ($uname=="小明") { echo "见到你真高兴,小明。"; }elseif ($uname=="小华"){ echo "喔,是小华呀。"; }else{ echo "你是$uname,对吧"; } ?> 除了if 语句外,还有while循环,它的语法如下: while(条件){ 语句体 } 当条件为true时,执行语句体。 do…while的语法如下: do { 语句体 }while(条件) 先执行一次语句体,若条件为true,则循环再次执行语句体。 for循环的语法同C一样,如下: for (条件初始;判断条件;条件改变) {语句} 而break 跳出正在执行的循环,continue 为中断本次循环。 好了,本文就到这吧。以上的一些基础相信您很快便能上手了的。 软件开发网 www.mscto.com 上文中曾提到了PHP提交表单信息是很方便的。可是,提交的表单信息中的变量的生命周期是多长呢?本文就来崐谈谈这个问题。 表单的参数会传给下一个处理程序,这是不用置疑的。因为,我们曾有过这样的例子。可它还会继续传给下一个处理程序吗? 答案是否定的!一个Form表单所提交的参数只传给第一个处理程序,而下一个处理程序中它是不会起作用的。来看看下例吧: 文件:table.html <html> <head><title>表单提交</title> </head> <body> <form action="deal-1.php"> 输入你认为好的歌星:<input type="text" name="start" size=20 > <input type="submit" value="是他了,送出吧"> </form> </body> </html> 文件:deal-1.php <?php echo "<html><body>"; echo "你喜欢$start,对吗?<br>"; echo "<a href=\"deal-2.php\">试试是否会再传下去</a>"; echo "</body></html>"; ?> 文件:deal-2.php <?php echo "<html><body>"; echo "你说$start好吗?"; echo "</body></html>"; ?> 从上例中,我们可以看见:deal-1.php处理的结果为(假定我们在table.html中输入的是“张学友”): 你喜欢张学友,对吗? 试试是否会再传下去 说明表单提交了变量$start给deal-1.php,而在deal-1.php的显示结果中,若我们点击了链接“试试是否会再传下去”之后,deal-2.php的处理结果为: 你说好吗? 很明显,$start没有传给deal-2.php。但是,我们又怎样延长$start的生命周期呢?其实,这很简单,使用参数传递的方法就行了。 软件开发网 www.mscto.com 我们可以把deal-1.php改成这样: <?php echo "<html><body>"; echo "你喜欢$start,对吗?lt;br>"; echo "<a href=\"deal-2.php?start=$start\">试试是否会再传下去</a>"; echo "</body></html>"; ?> 分析程序,你会发现只是在deal-1.php后加了一句“?start=$start”就行了,而这起的作用就是参数传递。如:http://zhuagk12.oso.com.cn/cartoon.php?no=1 其?后的为参数,no为参数名,其值为1。这样,会在cartoon.php程序中产生变量$no,其值为1。若传两个以上崐参数,其间用&分隔。如:http://zhuagk12.oso.com.cn/cartoon.php?no=2&debug=1 为了延长参数的生命周期,我们还可以使用Cookie或Session来实现,这里不加多述,在以后的文章中你会见到它们的用法。 本文就这两种技术作一些介绍。   Cookie我们都常把它念成“库记”,也叫它“小甜点”。它是一种存储在客户浏览器中的一个小文件。它是为解决HTTP的一次连接而无崐记忆而发展起来的,可用来追踪使用者或是对重返的使用者进行确认。PHP对此提供了setcookie()函数,可以设定Cookie。因为Cookies算是HTTP标头的一部分。所以,setcookie()函数必须在网页数据传给浏览器之前调用。这同调用header()函数是一样的。 Cookie必须由主机端提供;所以,我们必须在CGI程序中送出一个设定了cookie的标头。 如下是PHP中调用setcookie()函数设定cookie的例子: <?php setcookie("user","wind",time()+3600,"/php/","http://www.oso.com.cn"); ?>  其中,user为该cookie的名称;wind为该cookie的值;time()+3600为该cookie的有效时间;/php/为该cookie的相关路径;http://www.崐oso.com.cn为该cookie的网站。   其实,我们除了使用这种方式设定cookie外,还可使用header()函数如:header("Set-Cookie:user=wind"),不过这要对HTTP的头部信崐息有所了解才行,所以笔者不建议使用这种方式,还是使用setcookie()方便些。   读取cookie时,浏览器在连接某个网站时,会自动先检查是否有该站的cookie,有的话将会自动传给服务器,而在PHP中,会将传回的co崐okie作为一个变量。如上面所设的cookie返回后,会形成一个$user变量,其值为wind。   但是,cookie有个致命的缺点,就是若客户关了cookie接收,无法向客户端存放cookie时,一切操作就会出错。因此,在PHP4中提供了S崐ession来代替Cookie。 Session与Cookie的最大区别在于Cookie将信息存于客户端,而Session则是存于服务器端。其实,Session是对PHP脚本提供了一个全局崐变量。例子如下: 软件开发网 www.mscto.com设置一个Session,名为user,值为wind <?php session_start(); $user="wind"; session_register("user"); ?> 读Session,显示结果为“欢迎你!wind” ?br> <?php session_start(); echo "欢迎你!$user"; ?>
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部