浅谈PHP语法(一)
时间:2007-02-18 来源:PHP爱好者
浅谈PHP语法(1)
《谈谈HTML语法》一文,我已经介绍了基本的HTML语法。可以编出一个静态的Web页,可动态交互信息是很重要的。如一些网站的会员制的会员注册、登录都需后端程序的运行。很多网站所用的CGI程序主要用Perl、ASP、Java、PHP编写,而我们所要用的就是PHP。它是完全免费的,这就要感谢那些默默无闻的编程人员了。 PHP的结构类似于C语言,这可是应证了C语言里提的“一处学习,到处编程”。相信学过C语言的人可很容易上手PHP的。还是先介绍一些PHP语法吧。本文适合初学者学习。
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中的数组语法为:
数组名[索引]
索引可为数字,也可为文字。但不建议使用文字,因为意义不大。对于数组也比其它语言灵活如下例:
《谈谈HTML语法》一文,我已经介绍了基本的HTML语法。可以编出一个静态的Web页,可动态交互信息是很重要的。如一些网站的会员制的会员注册、登录都需后端程序的运行。很多网站所用的CGI程序主要用Perl、ASP、Java、PHP编写,而我们所要用的就是PHP。它是完全免费的,这就要感谢那些默默无闻的编程人员了。 PHP的结构类似于C语言,这可是应证了C语言里提的“一处学习,到处编程”。相信学过C语言的人可很容易上手PHP的。还是先介绍一些PHP语法吧。本文适合初学者学习。
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中的数组语法为:
数组名[索引]
索引可为数字,也可为文字。但不建议使用文字,因为意义不大。对于数组也比其它语言灵活如下例:
CODE:
[复制到剪切板]
<?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]<br>";
}
?> 非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
可看出,一个数组中的元素不一定为同一类型,这就是PHP数组的“活”处。
使用对象,可使编程者更易于维护,也使程序更为易读。较其它语言,PHP可简单多了,它只有类别(class)、方法(method)、属性(attribute)及扩展(extendsions)等。
前文谈的只是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<=5
>= 大于等于 $a>=1
= 相等赋值运算符 $a=0
+= 加法指定运算符 $a+=5
-= 减法指定运算符 $a-=5
*= 乘法指定运算符 $a*=5
/= 除法指定运算符 $a*=5
%= 余数指定运算符 $a%=5
.= 字符串指定运算符 $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.
$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]<br>";
}
?> 非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
可看出,一个数组中的元素不一定为同一类型,这就是PHP数组的“活”处。
使用对象,可使编程者更易于维护,也使程序更为易读。较其它语言,PHP可简单多了,它只有类别(class)、方法(method)、属性(attribute)及扩展(extendsions)等。
前文谈的只是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<=5
>= 大于等于 $a>=1
= 相等赋值运算符 $a=0
+= 加法指定运算符 $a+=5
-= 减法指定运算符 $a-=5
*= 乘法指定运算符 $a*=5
/= 除法指定运算符 $a*=5
%= 余数指定运算符 $a%=5
.= 字符串指定运算符 $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.
CODE:
[复制到剪切板]
<?php
$a="hello,";
$b="my baby.";
echo $a.$b;
?> php爱好者站 http://www.phpfans.net php基础|php进阶|php模板.
还有一个符号也使PHP的功能强大了。这就是“$”。它是用于变量之前的,表示这是个变量,如$A,$b等。那它的作用又强在哪呢?这就是变量的变量。
如下例:
$a="hello,";
$b="my baby.";
echo $a.$b;
?> php爱好者站 http://www.phpfans.net php基础|php进阶|php模板.
还有一个符号也使PHP的功能强大了。这就是“$”。它是用于变量之前的,表示这是个变量,如$A,$b等。那它的作用又强在哪呢?这就是变量的变量。
如下例:
CODE:
[复制到剪切板]
<?php
$a="go";
$$a="here";
echo $a;
echo $$a;
echo $go;
?> php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
显示结果为:
go
here
here
其实,在一个变量前加一个“$”,就是把这个变量的内容作为了一个新的变量名。这是PHP所特有的,有时可使程序简单化。
上一文《谈谈PHP语法》已谈了PHP的数据类型和表达式。现在,让我们来看看PHP的变量与常数。
让我们先看一例吧。
文件:test.php
$a="go";
$$a="here";
echo $a;
echo $$a;
echo $go;
?> php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
显示结果为:
go
here
here
其实,在一个变量前加一个“$”,就是把这个变量的内容作为了一个新的变量名。这是PHP所特有的,有时可使程序简单化。
上一文《谈谈PHP语法》已谈了PHP的数据类型和表达式。现在,让我们来看看PHP的变量与常数。
让我们先看一例吧。
文件:test.php
CODE:
[复制到剪切板]
<?php
//这是一种单行注释方法
#这是另一种单行注释方法
/*这是一种多行注释的方法
以下让我们看看例了吧*/
function display($file,$line)
{
global $message;
echo "file:$file<br>";
echo "LINE:$line<br>";
echo "Message:$message<br>";
}
$message="这是一个例程。";
display(_FILE_,_LINE_);
?> php爱好者站 http://www.phpfans.net php基础|php进阶|php模板.
显示结果为:
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>
文件:deal.php
//这是一种单行注释方法
#这是另一种单行注释方法
/*这是一种多行注释的方法
以下让我们看看例了吧*/
function display($file,$line)
{
global $message;
echo "file:$file<br>";
echo "LINE:$line<br>";
echo "Message:$message<br>";
}
$message="这是一个例程。";
display(_FILE_,_LINE_);
?> php爱好者站 http://www.phpfans.net php基础|php进阶|php模板.
显示结果为:
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>
文件:deal.php
CODE:
[复制到剪切板]
<?php
echo "你的用户名为:$uname";
?>
[code]
以上程序会要求用户输入一个用户名,提交表单后,后回用户名确认信息。可看出,表单中的uname已成为了deal.php程序中的$uname变量。简单吧。:-)
下面看看PHP的基本流程控制:
if…else…Elseif
语法一:
if (条件) {
语句体
}
语法二:
if (条件) {
语句体一
}else{
语句体二
}
语法三:
if (条件1) {
语句体一
}elseif(条件2) {
语句体二
}else{
语句体三
}
我们把上面的deal.php程序改为:
[code]
<?php
if ($uname=="小明") {
echo "见到你真高兴,小明。";
}elseif ($uname=="小华"){
echo "喔,是小华呀。";
}else{
echo "你是$uname,对吧";
}
?> php爱好 者站 http://www.phpfans.net php基础|php进阶|php模板.
除了if 语句外,还有while循环,它的语法如下:
while(条件){
语句体
}
当条件为true时,执行语句体。
do…while的语法如下:
do {
语句体
}while(条件)
先执行一次语句体,若条件为true,则循环再次执行语句体。
for循环的语法同C一样,如下:
for (条件初始;判断条件;条件改变) {语句}
而break 跳出正在执行的循环,continue 为中断本次循环。
文中曾提到了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
echo "你的用户名为:$uname";
?>
[code]
以上程序会要求用户输入一个用户名,提交表单后,后回用户名确认信息。可看出,表单中的uname已成为了deal.php程序中的$uname变量。简单吧。:-)
下面看看PHP的基本流程控制:
if…else…Elseif
语法一:
if (条件) {
语句体
}
语法二:
if (条件) {
语句体一
}else{
语句体二
}
语法三:
if (条件1) {
语句体一
}elseif(条件2) {
语句体二
}else{
语句体三
}
我们把上面的deal.php程序改为:
[code]
<?php
if ($uname=="小明") {
echo "见到你真高兴,小明。";
}elseif ($uname=="小华"){
echo "喔,是小华呀。";
}else{
echo "你是$uname,对吧";
}
?> php爱好 者站 http://www.phpfans.net php基础|php进阶|php模板.
除了if 语句外,还有while循环,它的语法如下:
while(条件){
语句体
}
当条件为true时,执行语句体。
do…while的语法如下:
do {
语句体
}while(条件)
先执行一次语句体,若条件为true,则循环再次执行语句体。
for循环的语法同C一样,如下:
for (条件初始;判断条件;条件改变) {语句}
而break 跳出正在执行的循环,continue 为中断本次循环。
文中曾提到了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
CODE:
[复制到剪切板]
<?php
echo "<html><body>";
echo "你喜欢$start ,对吗?<br>";
echo "<a href="deal-2.php">试试是否会再传下去</a>";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
文件:deal-2.php
echo "<html><body>";
echo "你喜欢$start ,对吗?<br>";
echo "<a href="deal-2.php">试试是否会再传下去</a>";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
文件:deal-2.php
CODE:
[复制到剪切板]
<?php
echo "<html><body>";
echo "你说$start 好吗?";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net PHP|MySQL|javascript|ajax|html.
从上例中,我们可以看见:deal-1.php处理的结果为(假定我们在table.html中输入的是“张学友”):
你喜欢张学友,对吗?
试试是否会再传下去
说明表单提交了变量$start给deal-1.php,而在deal-1.php的显示结果中,若我们点击了链接“试试是否会再传下去”之后,deal-2.php的处理结果为:
你说好吗?
很明显,$start没有传给deal-2.php。但是,我们又怎样延长$start的生命周期呢?其实,这很简单,使用参数传递的方法就行了。如下,我们可以把deal-1.php改成这样:
echo "<html><body>";
echo "你说$start 好吗?";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net PHP|MySQL|javascript|ajax|html.
从上例中,我们可以看见:deal-1.php处理的结果为(假定我们在table.html中输入的是“张学友”):
你喜欢张学友,对吗?
试试是否会再传下去
说明表单提交了变量$start给deal-1.php,而在deal-1.php的显示结果中,若我们点击了链接“试试是否会再传下去”之后,deal-2.php的处理结果为:
你说好吗?
很明显,$start没有传给deal-2.php。但是,我们又怎样延长$start的生命周期呢?其实,这很简单,使用参数传递的方法就行了。如下,我们可以把deal-1.php改成这样:
CODE:
[复制到剪切板]
<?php
echo "<html><body>";
echo "你喜欢$start,对吗?<br>";
echo "<a href="deal-2.php?start=$start">试试是否会再传下去</a>";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
分晰程序,你会发现只是在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来实现,这里不加多述,在以后的文章中你会见到它们的用法。
echo "<html><body>";
echo "你喜欢$start,对吗?<br>";
echo "<a href="deal-2.php?start=$start">试试是否会再传下去</a>";
echo "</body></html>";
?> php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
分晰程序,你会发现只是在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来实现,这里不加多述,在以后的文章中你会见到它们的用法。
相关阅读 更多 +