lwcompany

功到自然成

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

1 php入门

      1.1 php标记风格

          (1)以“<?php”开始,“?>”结束

                 <?php

                 //PHP代码

                  ?>

                 这是本书使用的标记风格,也是最常见的一种风格。它在所有的服务器环

                 境上都能使用,而在XML(可扩展标记语言)嵌入PHP代码时就必须使用

                 这种标记以适应XML的标准,所以推荐用户都使用这种标记风格。

      1.2 php程序注释

                  多行注释。一般是C语言风格的注释,以“/*”开始,“*/”结束

                  单行注释。可以使用C++风格或shell脚本风格的注释,C++风格是以

                                “//”开始,所在行结束时结束;

      1.3 使用php输出html

                  echo()和print()函数

      1.4 在html中嵌入php

                  在HTML代码中嵌入PHP代码相对来说比较简单,在1.2.6节的第一个

                   PHP页面就是在HTML中嵌入了PHP代码。下面是另一个在HTML中嵌入

                   PHP代码的例子:

<html>

<head>

<title>HTML中嵌入PHP</title>

</head>

<body>

HTML文本框

<input type=text value="<?php echo '这是PHP的输出内容'?>">

</body>

</html>

      1.5 php中使用简单的javascript

            PHP代码中嵌入JavaScript能够与客户端建立起良好的用户交互界面,强化

            PHP的功能,其应用十分广泛。在PHP中生成JavaScript脚本的方法与输出

            HTML的方法一样,可以使用显示函数。例如:

            <?php

               echo "<script>";

               echo "alert('我是JavaScript! ');";

               echo "</script>";

             ?>

【例3.1】 综合之前学习的内容,制作一个PHP和HTML、JavaScript结合的网页。

<html>
<head>
	<title>标记应用</title>
</head>
<body>
	<p align=center><font face="黑体" size="5">HTML页面</font></p>
	  <?php
		$str1="PHP变量1";	//在弹出框中显示
		$str2="PHP变量2";	//在文本框中显示
		echo "<script>";
		echo "alert('".$str1."');";//在JavaScript中使用 $str1变量
		echo "</script>";
	  ?>
	<input type="text" name="tx" size=20><br>
	<input type="button" name="bt" value="单击" onclick="tx.value='<?php echo $str2; ?>'">
</body>
</html>

                        保存后运行该文件,页面弹出如图3.1所示的对话框,单击【确认】按钮后,

                        页面中出现一个文本框和一个名为“单击”的按钮,单击【单击】按钮,文本

                        框中会显示“PHP变量2”,如图3.2所示。

3.1               3.2

        图3.1 javascript对话框                    3.2 单击按钮后的运行效果        

2.数据类型

      2.1 整型

           整型变量的值是整数,表示范围是-2 147 483 648~2 147 483 647。

           整型值可以用十进制数、八进制数或十六进制数的标志符号指定,前面再加上可选符号

           (-或+)。

            八进制数符号指定,数字前必须加0;

            十六进制数符号指定,数字前必须加0x。例如:

             $n1=656; //十进制数

             $n2=0; //零

             $n3=-42; //负数

             $n4=0123; //八进制数(等于十进制数的83)

             $n5=0x1B; //十六进制数(等于十进制数的27)

      2.2 浮点型

              浮点类型也称浮点数、双精度数或实数,浮点数的字长与平台相关,最大值是

               1.8e308,并具有14位十进制数的精度。例如:

               $pi=3.1415926;

               $length=1.3e4;

               $volume=7e-10;

      2.3 字符型

                1. 单引号

                   定义字符串最简单的方法是用单引号“'”括起来。如果要在字符串中表示单引号,

                   则需要用转义符“\”将单引号转义之后才能输出。和其他语言一样,如果在单引

                   号之前或字符串结尾处出现一个反斜线“\”,就要使用两个反斜线来表示。

                    例如:

                   <?php

                      echo '输出\'单引号'; //输出:输出'单引号

                      echo '反斜线\\'; //输出:反斜线\

                    ?>

                    另外一个需要注意的问题是单引号和双引号嵌套的问题,这在之前已经介绍过。

                 2. 双引号

                     使用双引号“"”将字符串括起来同样可以定义字符串。如果要在定义的字符串中

                     示双引号,则同样需要用转义符转义。另外,还有一些特殊字符的转义序列,如

                     表3.1所示

                    3_1

                    注意:如果使用“\”试图转义其他字符,则反斜线本身也会被显示出来。

                     使用双引号和单引号的主要区别是,单引号定义的字符串中出现的变量和转义序

                     列不会被变量的值替代,而双引号中使用的变量名在显示时会显示变量的值。

                     例如:

<?php
$str="加油";
echo '中国$str!';			//输出:中国$str!
echo "中国$str!";			//输出:中国加油!
?>

                     字符串的连接:使用字符串连接符“.”可以将几个文本连接成一个字符串,前面

                     已经用过。通常使用echo命令向浏览器输出内容时使用这个连接符可以避免编写

                      多个echo命令

<?php
$str= "PHP变量";
echo "连接成". "字符串";		//字符串与字符串连接
echo $str. "连接字符串";		//变量和字符串连接
?>

                    3.定界符

                       另一种定义字符串的方法是使用定界符“<<<”

 

      2.4 布尔型

                   要想定义布尔变量,只需将其值指定为TRUE或FALSE。

      2.5 数组和对象

                   数组是一组由相同数据类型元素组成的一个有序映射。在PHP中,映射是一种把

                   values(值)映射到keys(键名)的类型。数组通过array()函数定义,其值使用

                   “key->value”的方式设置,多个值通过逗号分隔。当然也可以不使用键名,默认

                   是1,2,3,…。例如:

<?php
$ar1=array(1,2,3,4,5,6,7,8,9);							//直接给数组赋值
$ar2=array("animal "->"tiger", "color"->"red","numer"->"12");      //为数组指定键名和值
?>
              
               在PHP中,是通过关键字“new”把对象实例化到一个变量中的
<?php
//定义一个类
class test
{
	var $items=0;
	function users()
	{
		$this->items=100;
	}
}
$newtest= new test();									//初始化对象
echo $newtest->items;									//访问对象的属性
$newtest->users();									//访问对象的方法
echo $newtest->items;
?>

 

      2.6 类型转换

                  PHP自动类型转换的另一个例子是加号“+”。如果一个数是浮点数,则使用加号后

                  其他的所有数都被当做浮点数,结果也是浮点数。否则,参与“+”运算的运算数都

                  将被解释成整数,结果也是一个整数。例如:

                  <?php

                     $str1="1"; //$str1为字符串型

                     $str2="ab"; //$str2为字符串型

                     $num1=$str1+$str2; //$num1的结果是整型(1)

                     $num2=$str1+5; //$num2结果是整型(6)

                     $num3=$str1+2.56; //$nun3结果是浮点型(3.56)

                     $num4=5+"6kb"; //$num结果为整型(11)

                    ?>

                      PHP还可以使用强制类型转换,它将一个变量或值转换为另一种类型,这种转换

                      与C语言类型的转换是相同的:在要转换的变量前面加上用括号括起来的目标类

                       型。PHP允许的强制转换如下:

                       (int),(integer):转换成整型。

                       (string):转换成字符串型。

                       (float),(double),(real):转换成浮点型。

                       (bool),(boolean):转换成布尔型。

                       (array):转换成数组。

                       (object):转换成对象。

                        例如

<?php
$var=(int)"hello";		//变量为整型(值为0)
$var=(int)TRUE;			//变量为整型(值为1)
$var=(int)12.56;		//变量为整型(值为12)
$var=(string)10.5;		//变量为字符串型(值为"10.5")
$var=(bool)1;			//变量为布尔型(值为TRUE)
$var=(boolean)0;		//变量为布尔型(值为FALSE)
$var=(boolean)"0";		//变量为布尔型(值为FALSE)
?>
               

说明:

                  ●强制转换成整型还可以使用intval()函数,转换成字符串型还可以使用strval()函

                   数。例如:

                         $var=intval("12ab3c"); //变量为整型(值为12)

                         $var=strval(2.3e5); //变量为字符串型(值为"2.3e5")

                  ●在将变量强制转换为布尔类型时,当被强制转换的值为整型值0、浮点型0.0、空

                    白字符或字符串"0"、没有特殊成员变量的数组、特殊类型NULL时都被认为是

                     FALSE,其他的值都被认为是TRUE。

                  ●如果要获得变量或表达式的信息,如类型、值等,可以使用var_dump()函数。例

                     如:

<?php
$var1=var_dump(123);
$var2=var_dump((int)FALSE);
$var3=var_dump((bool)NULL);
echo $var1;				//输出结果为:int(123)
echo $var2;				//输出结果为:int(0)
echo $var3;				//输出结果为:bool(FALSE)
?>

                       结果中,前面是变量的数据类型,括号内是变量的值。

                     ●另外一种强制转换类型的方法是使用settype()函数,语法格式如下:

                        bool settype(mixed $var, string $type)

                        bool表示返回值为布尔型。settype()函数将变量$var的类型设置为$type类

                        型。如果成功就返回TRUE,失败则返回FALSE。例如

<?php
$var="123hello";			//$var为字符串
settype($var, "int");			//$var现在为整型(值为123)
?>

3.变量与常量

      3.1 自定义变量

                     1. 变量名的定义

                         在定义变量时,变量名与PHP中其他标记一样遵循相同的规则:一个有效的变

                         量名由字母或下划线“_”开头,后面跟任意数量的字母、数字或下划线。

                      2.变量的初始化

                          PHP变量的类型有布尔型、整型、浮点型、字符串型、数组、对象、资源和

                          NULL。数据类型在前面已经做过介绍。变量在初始化时,使用“=”给变量

                          赋值,变量的类型会根据其赋值自动改变。例如:

$var="abc";				//$var为字符串型
$var=TRUE;				//$var为布尔型
$var=123;				//$var为整型
PHP也可以将一个变量的值赋给另外一个变量。例如:
<?php
$height=100;
$width=$height;			       //$width的值为100
?>

                       3. 变量的引用

                           PHP提供了另外一种给变量赋值的方式——引用赋值,即新变量引用原始变

                           量,改动新变量的值将影响原始变量,反之亦然。使用引用赋值的方法是,

                           在将要赋值的原始变量前加一个“&”符号。例如

<?php
$var="hello";				//$var赋值为hello
$bar=&$var;				//变量$bar引用$var的地址
echo $bar;				//输出结果为hello
$bar="world";				//给变量$bar赋新值
echo $var;				//输出结果为world
?>
                 

       注意:只有已经命名过的变量才可以引用赋值,例如下面的用法是错误的:$bar=&(25*5);

                       4. 变量的作用域

                          (1)局部变量

                                局部变量只是局部有效,它的作用域分为两种:

                                 ●在当前文件主程序中定义的变量,其作用域限于当前文件的主程序,

                                  不能在其他文件或当前文件的局部函数中起作用。

                                 ● 在局部函数或方法中定义的变量仅限于局部函数或方法,当前文件

                                    中主程序、其他函数、其他文件中无法引用。例如

<?php
$my_var="test";		//$my_var的作用域仅限于当前主程序
function my_func()
{
	$local_var=123;	//$local_var的作用域仅限于当前函数
         echo ' $local_var=' . $local_var ."<br>";	//调用该函数时输出结果值为123
	echo ' $my_var = ' . $my_var . "<br>";	//调用该函数时输出结果值为空
}
my_func();			        //调用my_func()函数
echo '$my_var=' . $my_var . "<br>";	//输出结果值为"test"
echo '$local_var=' . $local_var . "<br>";//输出结果值为空
?>
                        

                                     在函数的局部变量里还有一个特殊的例子——静态变量。它也属于

                                     函数中的局部变量,只不过一般变量在程序执行时,离开作用域后

                                     其值就会消失或改变,而静态变量在程序执行时,离开作用域后其

                                     值不会消失。静态变量使用“static”关键字来声明。

                           (2)全局变量:必须使用global关键字先声明为全局变量,否则视为局部

                                   注意:函数中定义的全局变量只在函数被调用后才会有效。

                          5.检查变量是否存在

                             前面使用过isset()函数,它的作用是检查变量是否存在,语法格式如下:

                                  bool isset ( mixed $var [, mixed $var [, $... ]] )

                                  当变量$var已经存在,该函数将返回TRUE,否则返回FALSE。

                                   例如:

                                 <?php

                                  $var1="";

                                  $var2=123;

                                  var_dump(isset($var1)); //返回bool(TRUE)

                                  var_dump(isset($var2)); //返回bool(TRUE)

                                   ?>

                                  另外,unset()函数释放一个变量。empty()函数检查一个变量是否

                                  为空或零值,如果变量值是非空或非零值,则empty()返回FALSE,

                                   否则返回TRUE。换句话说,""、0、"0"、NULL、FALSE、array

                                    ()、var $var,以及没有任何属性的对象都将被认为是空的。

                                   例如:

<?php
$var=0;
if(empty($var))
	echo "变量为空";	//输出"变量为空"
?>

     3.2 可变变量

                          在不确定一个变量的名称时,可以使用可变变量。所谓可变变量就是一个变

                          量的变量名可以动态地设置和使用。一个普通变量通过声明来设置,而一个

                           可变变量通过获取一个普通变量的值作为它的变量名。可变变量通过两个

                          “$”来设置

 

      3.3 预定义变量

                        又称超全局变量或自动全局变量。

                       1. 服务器变量$_SERVER

                           服务器变量是由Web服务器创建的数组,其内容包括头信息、路径、脚本位

                           置等信息。不同的Web服务器提供的信息也不同,本书以Apache服务器提

                           供的信息为例。表3.2列出了一些常用的服务器变量及其作用,使用

                           phpinfo()函数可以查看到这些变量信息。

                           3_3_3

                            3_3_3_2

                            PHP还可以直接使用数组的参数名来定义超全局变量,例如“$_SERVER

                            ["PHP_SELF "]”可以直接使用$PHP_SELF变量来代替,但该功能默认是

                            关闭的,打开它的方法是,修改php.ini配置文件中“register_globals =

                            Off”所在行,将“Off”改为“On”。但是全局系统变量的数量非常多,这样

                             可能导致自定义变量与超全局变量重名,从而发生混乱,所以不建议开启

                             项功能。

例如:

<?php

echo $_SERVER["SERVER_PORT"]; //输出80

echo $_SERVER["SERVER_NAME"]; //输出localhost

echo $_SERVER["DOCUMENT_ROOT"]; //输出D:/WAMP/Apache/htdocs

?>

                          2. 环境变量$_ENV

                              环境变量记录与PHP所运行系统相关的信息,如系统名、系统路径等。单

                               独访问环境变量可以通过“$_ENV['成员变量名']”方式来实现。成员变

                              量名包括ALLUSERSPROFILE、CommonProgramFiles、

                              COMPUTERNAME、ComSpec、FP_NO_HOST_CHECK、NUMBER_

                              OF_PROCESSORS、OS、Path、PATHEXT、PHPRC、

                              PROCESSOR_ARCHITECTURE、PROCESSOR_IDENTIFIER、

                              PROCESSOR_LEVEL、PROCESSOR_REVISION、ProgramFiles、

                               SystemDrive、SystemRoot、TEMP、TMP、USERPROFILE、

                               windir、AP_PARENT_PID等。

                               如果PHP是测试版本,使用环境变量时可能会出现找不到环境变量的问

                              题。解决办法是,打开php.ini配置文件,找到“variables_order

                               = "GPCS"”所在的行,将该行改成“variables_order = "EGPCS"”,然

                              后保存,并重启Apache

                           3. GLOBAL变量$GLOBALS

                               $GLOBALS变量以数组形式记录所有已经定义的全局变量。通过

                               “$GOLBAL["变量名"]”的方法来引用全局变量。由于 $GLOBALS 超

                               全局变量可以在程序的任意地方使用,所以它比使用“global”引用全局

                               变量更方便。例如:

<?php
$a = 1;
$b = 2;
function Sum()		    //创建Sum()函数
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];	//运算全局变量$b的值
}
Sum();
echo $b;		    //输出结果为3
?>
                   

                                 另外,PHP的预定义变量还有:

                             ●$_COOKIE。它是由 HTTP Cookies传递的变量组成的数组。

                             ●$_GET。它是由HTTP get方法传递的变量组成的数组。

                             ●$_POST。它是由HTTP post方法传递的变量组成的数组。

                             ●$_FILES。它是由HTTP post方法传递的已上传文件项目组成的数组。

                             ●$_REQUEST。它是所有用户输入的变量数组,包括$_GET、$_POST、$_COOKIE所包含的输入内容。

                             ● $_SESSION。它是包含当前脚本中会话变量的数组

      3.4 外部变量

                           在程序中定义或自动产生的变量叫内部变量,而由HTML表单、URL或外部

                            程序产生的变量叫外部变量。外部变量可以通过预定义变量$_GET、

                            $_POST、$_REQUEST来获得表单可以产生两种外部变量:POST变量和

                            GET变量。POST变量用于提交大量的数据,$_POST变量从表单中接收

                            POST变量,接收方式为“$_POST['表单变量名']”;GET变量主要用于

                            小数据量的传递,$_GET变量从提交表单后的URL中接收GET变量,接收

                            方式为“$_GET['表单变量名']”。$_REQUEST变量可以取得包括

                             POST、GET和Cookie在内的外部变量。

                 【例3.2】  分别用POST和GET方法提交表单,使用$_GET、
                  $_POST、$_REQUEST变量接收来自表单的外部变量。
新建EX3_2.php文件,输入以下代码。
<html>
<head>
<title>外部变量演示</title>
</head>
<body>
<!-- 产生POST外部变量的HTML表单form1 -->
<form action="" method="post">
    学号:<input type="text" name="XH"><br>
    姓名:<input type="text" name="XM"><br>
   <input type="submit" name="postmethod" value="POST方法提交">
</form>
<!-- 产生GET外部变量的HTML表单form2 -->
<form action="" method="get">
    性别:<input name="SEX" type="radio" value="男">男
        <input name="SEX" type="radio" value="女">女<br>
    专业:<select name="ZY">
          <option>计算机</option>
          <option>软件工程</option>
          <option>信息管理</option>
        </select><br>
   <input type="submit" name="getmethod" value="GET方法提交">
</form>
</body>
</html>
 
<?php
//使用isset()函数判断是否是POST方法提交
if(isset($_POST['postmethod']))
{
	$XH=$_POST['XH'];						//获取学号值
	$XM=$_POST['XM'];						//获取姓名值
	echo "接收POST变量:<br>";
	echo "学号:".$XH."<br>";
	echo "姓名:".$XM."<br>";

}
//使用isset()函数判断是否是GET方法提交
if(isset($_GET['getmethod']))
{
	$SEX=$_GET['SEX'];						//GET方法获取性别值
	$ZY=$_GET['ZY'];						//GET方法获取专业值
	echo "<br>接收GET变量:<br>";
	echo "性别:".$SEX."<br>";
	echo "专业:".$ZY."<br>";
}
	echo "<br>接收REQUEST变量:<br>";			//将REQUEST方法获取的变量列在最后
	echo "学号:".@$_REQUEST['XH']."<br>";	//使用REQUEST方法获取学号
	echo "姓名:".@$_REQUEST['XM']."<br>";	//使用REQUEST方法获取姓名
	echo "性别:".@$_REQUEST['SEX']."<br>";	//使用REQUEST方法获取性别
	echo "专业:".@$_REQUEST['ZY']."<br>";	//使用REQUEST方法获取专业
?>

保存后运行,在学号文本框中输入“081101”,姓名文本框中输入“王林”,单击【POST方法提交】按钮,运行结果如图3.3所示。接着在性别单选按钮中选择“男”,专业选项菜单中选择“软件工程”,单击【GET方法提交】按钮,运行结果如图3.4所示。

3_3_4    

图3.3 POST外部变量

3_3_4_2        

图3.4 GET外部变量

 

      3.5 常量

                常量分为自定义常量和预定义常量。

                1. 自定义常量

                    自定义常量使用define()函数来定义,语法格式如下:

                               define("常量名","常量值");

                    常量一旦定义,就不能再改变或取消定义,而且值只能是标量,数据类型只能是

                     boolean、integer、float或string。和变量不同,常量定义时不需要加“$”。

                    例如:                   

                      define("_KO","156");

                      define("CONSTANT","Hello World!");

                2. 预定义常量

                     预定义常量也称魔术常量,PHP提供了大量的预定义常量。但是很多常量是由不同的

                     扩展库定义的,只有加载这些扩展库后才能使用。预定义常量使用方法和常量相同,

                      但是它的值会根据情况的不同而不同,经常使用的预定义常量有5个,这些特殊的常

                     量是不区分大小写的,如表3.3所示

                      3_3_5

                    

4.运算符与表达式

      4.1 算术运算符

                       PHP有6种最基本的算术运算符:加(+)、减(-)、乘(*)、除(/)、取模

                      (%)、取反(-)。例如:

                       <?php

                        $a=10;

                        $b=3;

                        $num=$a+$b; //加法,$num值为13

                        $num=$a-$b; //减法,$num值为7

                        $num=$a*$b; //乘法,$num值为30

                        $num=$a/$b; //除法,$num值为3.333333…

                        $num=$a%$b; //取模,$num值为1

                        $num=-$a; //取反,$num值为-10

                         ?>

      4.2 赋值运算符

                        赋值运算符的作用是将右边的值赋给左边的变量,最基本的赋值运算符是“=”。

                        “$a=3”表示将3赋给变量$a,变量$a的值为3。由“=”组合的其他赋值运算符还

                        有“+=”、“-=”、“*=”、“/=”、“.=”等。

                        例如:

                        <?php

                           $a=10;

                           $b=3;

                           $num=$a+$b; //将$a+$b的结果值赋给$num,$num值为13

                           $num=($c=6)+4 //$c的值为6,$num的值为10

                           $a+=6; //等同于$a=$a+6,$a赋值为16

                           $b-=2; //等同于$b=$b-2,$b赋值为1

                           $a*=2; //等同于$a=$a*2,$a赋值为32

                           $b/=0.5; //等同于$b=$b/0.5,$b赋值为2

                           $string="连接";

                            $string.="字符串"; //等同于$string=$string."字符串",$string赋值为"连接

                                                   //字符串"

                           ?>

      4.3 位运算符

                            位运算符可以操作整型和字符串型两种类型数据。它操作整型数的指定位置

                            位,如果左、右参数都是字符串,则位运算符将操作字符的ASCII值。表3.4列

                             出了所有的位运算符及其说明。

                             表3.4 PHP的位运算符及其说明

                             3_4_3

      4.4 比较运算符

                             比较运算符用于对两个值进行比较,不同类型的值也可以进行比较,如果比较

                             的结果为真则返回TRUE,否则返回FALSE。表3.5列出了所有的比较运算符及

                             其说明。

                              3_4_4

                              说明:要注意,如果整数和字符串进行比较,字符串会被转换成整数;如果比

                              较两个数字字符串,则作为整数比较。其他类型之间的比较请参照表3.6。

                               3_4_4_2

                              

      4.5 错误控制运算符

                               PHP支持错误控制运算符@,将其放置在PHP表达式之前,该表达式可能产

                               生的任何错误信息都将被忽略。例如:

                               <?php

                                    echo $a; //变量$a未定义,不加@会显示NOTICE信息

                                    $a="Hello!";

                                    echo $a; //输出"Hello!"

                                    $b=@test(); //忽略调用test()函数时产生的错误信息

                                    $cnn=@mysql_conncet("localhost","username","pwd");//忽略连

                                    接mysql数据库出错产生的错误信息

                                    ?>

                                    当程序产生错误时,PHP会将错误信息输出到屏幕上,使用错误控制运

                                    算符后就不再显示这些错误信息了。由于错误控制运算符只对表达式有

                                    效,可以将它放在变量、函数、常量等之前,而不能将它放在函数的定

                                    义或类的定义之前,也不能用于条件结构,如if和foreach等

      4.6 执行运算符

                                PHP支持一个执行运算符,即反引号(``)。在PHP脚本中,将外部程序的

                                命令行放入反引号中,并使用echo()或print()函数将其显示,PHP将会在

                                 到达该行代码时启动这个外部程序,并将其输出信息返回,其作用效果与

                                shell_exec()函数相同

      4.7 递增/递减运算符

                                 PHP支持C语言风格的递增与递减运算符。PHP的递增/递减运算符主要是

                                 对整型数据进行操作,同时对字符也有效。这些运算符是前加、后加、前

                                 减和后减。前加是在变量前有两个“+”号,如“++$a”,表示$a 的值先

                                 加1,然后返回 $a。后加的“+”在变量后面,如“$a++”,表示先返回

                                 $a,然后$a的值加1。前减和后减与加法类似。例如:

<?php
$a=5;			//$a赋值为5
echo ++$a;		//输出6
echo $a;		//输出6
$a=5;
echo $a++;	        //输出5
echo $a;		//输出6
$a=5;
echo --$a;		//输出4
echo $a;		//输出4
$a=5;
echo $a--;		//输出5
echo $a;		//输出4
?>
                       PHP还可对字符进行递增运算,不过与C语言不同的是,对
                       “'Z'”进行递增将得到“'AA'”,而在C中,“'Z'+1”将得到
                       “'['”(“Z”的ASCII码为90,“[”的ASCII码为91)。在PHP
                       中,字符变量只能递增,递减没有效果。

      4.8 逻辑运算符

                                    逻辑运算符可以操作布尔型数据,PHP中的逻辑运算符有6种,表3.7列

                                    出了所有的逻辑运算符及其说明

                                      3_4_8

                                  

      4.9 字符串运算符      

                                    字符串运算符主要用于连接两个字符串,PHP有两个字符串运算符“.”

                                    和“.=”。“.”返回左、右参数连接后的字符串,“.=”将右边参数附

                                     加到左边参数后面,它可看成赋值运算符。

                                   例如:

                                       

      4.10 其他运算符  

                                    提供了数组运算符,用来对两个数组进行比较,表3.8中列出了所有的数

                                    组运算符及其说明。PHP还有一个类型运算符instanceof,用来测定一

                                     个给定的对象是否来自指定的对象类。

                                    3_4_10

      4.11 运算符优先级和结合性                               

                            一般来说,运算符具有一组优先级,也就是它们的执行顺序。运算符还有结合

                             性,也就是同一优先级的运算符的执行顺序,这种顺序通常是从左到右(简称

                             左)、从右到左(简称右)或者非结合。3.9从高到低列出了PHP运算符的

                             优先级,同一行中的运算符具有相同优先级,此时它们的结合性决定了求值顺

                             序。

                             说明:表中未包括优先级最高的运算符——圆括号。它提供圆括号内部的运算

                             符的优先级,这样可以在需要时避开运算符优先级法则。例如:

                              $a=$b*(2+$c);

                              如果写成:

                               $a=$b*2+$c;

结 合 方 向

运 算 符

附 加 信 息

非结合

new

new

[

array()

非结合

++ --

递增/递减运算符

非结合

! ~ - (int) (float) (string) (array) (object) @

类型

* / %

算数运算符

+ - .

算数运算符和字符串运算符

<< >>

位运算符

非结合

< <= > >=

比较运算符

非结合

== != === !==

比较运算符

&

位运算符和引用

^

位运算符

|

位运算符

&&

逻辑运算符

||

逻辑运算符

? :

三元运算符

= += -= *= /= .= %= &= |= ^= <<= >>=

赋值运算符

and

逻辑运算符

xor

逻辑运算符

or

逻辑运算符

,

多处用到

      4.12 表达式

                     表达式是PHP最重要的基石。在PHP中,几乎所写的任何东西都是一个表达式。简单

                     却最精确的定义表达式就是“任何有值的东西”。最基本的表达式就是常量和变量;

                    一般的表达式大部分都是由变量和运算符组成的,如$a=5;再复杂一点的表达式就是

                     函数。下面一些例子说明了表达式的各种形式:

<?php
$a=10;
$b=$a++;
$a>1?$a+10:$a10;
function test()
{
	return 20;
}
?>
【例3.3】  利用各种运算符计算半径为10的圆的面积和上底为20、下底为30、高为10的梯形的面积。如果圆面积和梯形面积都大于50,则输出两个图形的面积。
新建EX3_3.php文件,输入以下代码:
<?php
define('PI',3.1415926);
$C_area=2*PI*10*10;
$T_area=(20+30)*10/2;
if($C_area>100&&$T_area>100)
{
	echo "圆的面积为:".$C_area."<br>";
	echo "梯形面积为:".$T_area."<br>";
}
?>
               3_4_12

5 流程控制

      5.1 条件控制语句

                        1. if…else语句

                           if结构是包括PHP在内的很多语言的重要特性之一,它允许按照条件执行代码

                           段,和C语言的结构很相似。语法格式:

                           if(expr1)

                             //代码段1

                           elseif(expr2)

                             //代码段2

                               …

                            else

                            //代码段n

                          (1)if语句

                              if(expr1)语句中,expr1是一个表达式,它返回布尔值。当表达式值为TRUE

                              时,执行代码段1中的语句;值为FALSE时,则跳过这段代码。例如:

                              if($a==5) //判断$a是否等于5

                              {

                                 $b=$a+5;

                                 $a++;

                                }

                          2)elseif语句

                                elseif也可以隔开来写做else if。只有在要判断的条件多于两个时才会使用

                                到elseif语句,例如,判断一个数等于不同值的情况。elseif语句是if语句的

                                延伸,其自身也有条件判断的功能。只有当上面的if语句中的条件不成立即

                                表达式为FALSE时,才会对esleif语句中的表达式expr2进行判断。expr2的

                                值为TRUE则执行代码段2中的语句,值为FALSE则跳过这段代码。elseif语

                                句可以有很多个,例如:

                                 <?php

                                    $a=3;

                                    if($a==1) //$a不等于1,跳过此代码段

                                    {

                                       echo "等于1";

                                     }

                                    elseif($a==2) //$a不等于2,跳过此代码段

                                    {

                                      echo "等于2";

                                     }

                                       elseif($a==3) //$a等于3,执行此代码段

                                     {

                                        echo "等于3";

                                      }

                                      ?>

                          (3)else语句

                                else语句中不需要设置判断条件,只有当if和elseif语句中的条件都不满足时

                                 执行else语句中的代码段。由于if、elseif和else语句中的条件是互斥的,

                                 所以其中只有一个代码段会被执行。当要判断的条件只有两种情况时,可

                                 以省略elseif语句。例如:

                                 <?php

                                    $a=5;

                                    $b=6;

                                    if($a==$b)

                                       echo "a等于b";

                                    else

                                      echo "a不等于b";

                                    ?>

【例3.4】  编写PHP程序产生一个随机数,并让浏览者在页面上输入数字来猜测该数,并给予相应提示。
新建EX3_4.php文件,输入以下代码:
<form method="post">
<input type="text" name="SZ">
<input type="submit" name="button" value="提交">
</form>
<?php
if(isset($_POST['button']))	//判断提交按钮是否按下
{
		$SZ=$_POST["SZ"];//接收文本框SZ的值
		$a=rand(10,100);//使用rand()函数产生一个随机数
		if($SZ>$a)	//输入数的值与随机数进行比较
			echo "您输入的数字太大了,请重输";
		elseif($SZ<$a)
			echo "您输入的数字太小了,请重输";
		else
			echo "<script>alert('您猜对啦!')</script>";
}
?>

                       运行结果略。

                          说明:rand函数的作用是产生并返回一个随机整数,语法格式如下:

                                  int rand([int $min], [int $max]);

               2. switch语句

                            switch语句和具有同样表达式的一系列if语句相似。在同一个变量或表达式需

                            要与很多不同值比较时,可使用switch语句。语法格式:

                             switch(var)

                            {

                              case var1:

                              //代码段1

                                  break;

                              case var2:

                              //代码段2

                                   break;

                                   …

                               default:

                               //代码段n

                              }

                             程序中break语句的作用是跳出程序,使程序停止运行。

                   【例3.5】 使用switch语句判断来自表单的值。

                    新建EX3_5.php文件,输入以下代码

                     运行结果略。

                     注意:switch语句只可以接收整型、浮点型和字符串变量的值。

                     上面的switch语句换成如下if语句效果一样

<!-- HTML表单,包含一个下拉菜单和一个提交按钮 -->
<form name="form1" method="post" action="">
兴趣爱好<select name="XQ">
          <option>打篮球</option>
          <option>看书</option>
          <option>看电影</option>
          <option>上网</option>
</select>
<input type="submit" name="bt" value="提交">
</form>

<?php
$XQ=@$_POST["XQ"];							//接收表单的值
switch($XQ)
{
	case "打篮球":
		echo "小王喜欢打篮球";
		break;
	case "看书":	
		echo "小王喜欢看书";
		break;
	case "看电影":
		echo "小王喜欢看电影";
		break;
	case "上网":
		echo "小王喜欢上网";
		break;
	default:
		echo "请选择小王的兴趣爱好";
}	
?>

      5.2 循环控制语句

                          1. while循环

                              while循环是PHP中最简单的循环类型,当要完成大量重复性的工作时,可以

                              通过条件控制while循环来完成。语法格式:

                               while(exp)

                               {

                                  //代码段

                                }

                                说明:当while()语句中表达式exp的值为TRUE时,就运行代码段中的语

                                 句,同时改变表达式的值。语句运行一遍后,再次检查表达式exp的值,如

                                果为TRUE则再次进入循环,直到值为FALSE时就停止循环。如果表达式

                                exp的值永远都是TRUE,则循环将一直进行下去,成为死循环。如果表达

                                式exp一开始的值就为FALSE,则循环一次也不会运行。

                                 例如,计算10的阶乘

<?php
$sum=$m=1;				//初始化
while($m<10)
{
	$sum=$sum*$m;			//累积
	$m++;				//$m自增1
}
echo $sum;				//输出362880
?>

                             2. do-while循环

                                 语法格式:

                                      do

                                            {

                                              //代码段

                                       }while(exp);

                                      do-while循环与while循环非常相似,区别在于do-while循环首先执

                                       行循环内的代码,而不管while语句中的exp条件是否成立。程序执行

                                       一次后,do-while循环才来检查exp值是否为TRUE,为TRUE则继续

                                       循环,为FALSE则停止循环。而while循环是首先判断条件是否成立

                                       才开始循环。所以当两个循环中的条件都不成立时,while循环一次也

                                       没运行,而do-while循环至少要运行一次。例如:

<?php
$n=1;
do
{
	echo $n ."<br>";
	$n++;
}while($n<10);
?>

                               3. for循环

                                   for循环是PHP中比较复杂的一种循环结构,语法格式如下:

                                   for(expr1;condition;expr2)

                                    //代码段

                                    说明:表达式expr1在循环开始前无条件求值一次,这里通常设置一个初

                                    始值。表达式condition是一个条件,在循环开始前首先测试表达式

                                    condition的值。如果为FALSE则结束循环,如果为TRUE则执行代码段

                                    中的语句,循环执行完一次后执行表达式expr2,之后继续判断

                                     condition的值,如果为TRUE则继续循环,如果为FALSE则结束循环。

                                    例如:

<?php

$m=10;

for($i=0;$i<$m;$i++)

{

echo $i."<br>";

}

?>

                                       for循环中的每个表达式都可以为空,但如果condition为空则PHP认

                                       为条件为TRUE,程序将无限循环下去,成为死循环,如果要跳出循

                                       环,需要使用break语句,例如:

<?php
for($i=0;;)
{
   if($i>10)
   {
     break;	//如果$i大于10则跳出循环
    }
 echo $i. "<br>";//输出$i
     $i++;  	//$i加1
}
?>

                                另外,for循环也可以和其他循环嵌套使用。

                             【例3.6】 使用for循环打印九九乘法表。

                             新建EX3_6.php文件,输入以下代码:

<?php

for($i=1;$i<=9;$i++) //第一层for循环

{

for($j=1;$j<=$i;$j++) //第二层for循环

{

echo "$i*$j=".$i*$j."&nbsp;"; //输出乘法口诀

if($j==$i) //如果行数等于列数就回车

echo "<br>";

}

}

?>
              3_5_2
【例3.7】 使用循环输出一个5行4列的表格
<?php
$i=0;
echo "<table width=200 border=1 align=center>";	//输出表格的头
while($i<5)					//使用while循环输出表格的行
{
		echo "<tr>";			//每行的开头
		for($j=1;$j<5;$j++)		//使用for循环输出表格的列
		{
			echo "<td>".$j."</td>";	//每列上显示$j的值
		}
		echo "</tr>";			//每行的结尾
		$i++;				//进入下一行
}
echo "</table>";
?>
3_5_2_2

4. foreach循环

foreach语句也属于循环控制语句,但它只用于遍历数组,当试图将其用

于其他数据类型或者一个未初始化的变量时会产生错误。有关foreach循

环的内容将在介绍数组时讨论。

1. break控制符

break控制符在前面已经使用过,这里具体介绍。它可以结束

当前for、foreach、while、do-while或switch结构的执

行。当程序执行到break控制符时,就立即结束当前循环。

例如:

<?php
$i=1;
while($i<10)
{
		if($i>3)
			break;		//当$i>3时结束while循环
		echo $i."<br>";		//输出$i,$i最后输出的值只有1,2,3
		$i++;			//$i自增1
}
?>
                       循环语句嵌套使用时,break控制符还可以在后面加一个可选的数
                       字来决定跳出哪一层循环
<?php
   for($n=0;$n<10;$n++)
{
   while(true)
   {
    switch($n)
    {
      case 2:
            echo $n;
            break;   //跳出switch
      case 4
            echo $n;
            break 1;//跳出switch
      case 6
            echo $n;
            break2;//跳出while循环
      case 8
            echo $n;
            break3; //跳出for循环
     }
    n++;
   }
}
?>

2. continue控制符

continue控制符用于结束本次循环,跳过剩余的代码,

并在条件求值为真值时开始执行下一次循环。例如:

<?php
$m=5;
for($n=0;$n<10;$n++)
{
		if($n==$m)
			continue;	//跳出本次循环
		echo $n;		//输出的结果是012346789
}
?>
                              和break控制符一样,continue控制符在循环语句嵌套
                              使用时,也可在后面加一个可选的数字来决定跳出哪一层
                              循环,例如
<?php
for($n=0;$n<15;$n++)
{
	while(1)							//while循环是无限循环
	{
		echo $n++;
		if($n==10)
			continue 2;	//跳出本次的for循环
		if($n>15)
			break;						// $n >15时结束while循环
	}
}
?>
                            

3. return控制符

在函数中使用return控制符,将立即结束函数的执行并

将return语句所带的参数作为函数值返回。在PHP的脚本

或脚本的循环体内使用return,将结束当前脚本的运

行。例如

<?php
$n=5;
for($i=1;$i<10;$i++)
{
	if($i>$n)
	{				
		return;				//当$i>5时结束脚本运行
		echo "大于5";			//此处不输出任何内容
	}
	echo $i ." ";				//输出1 2 3 4 5
}
?>

4. exit控制符

exit控制符也可结束脚本的运行,用法和return控制

符类似。例如

<?php
$a=5;
$b=6;
if($a<$b)
	exit;				//如果$a<$b则结束脚本
echo $a."小于".$b;			//不输出
?>
                              但exit和return的不同之处在于,当前文件包含另外的
                              文件时,若在被包含文件中执行exit ,则当前文件被包
                              含文件下面的代码都会停止运行,而return则中止当前
                              文件中的代码的

      5.3 流程控制符

                                    这4种语句的用法类似,不同之处在于:

                                   ●include()包含文件发生错误时,如包含的文件不存在,脚本将发出一个

                                                 警告,但脚本会继续运行。

                                   ●require()包含文件发生错误时,会产生一个致命错误并停止脚本的运

                                                 行。

                                   ●include_once()使用方法和include()相同,但如果在同一个文件中使

                                                 用include_once()函数包含了一次指定文件,那么此文件将

                                                 不被再次包含。

                                    ●require_once()使用方法和require()相同,但如果在同一个文件中使

                                               用require_once()函数包含了一次指定文件,那么此文件将不

                                               被再次包含。

在包含文件时,函数中要指定正确的文件路径和文件名。如果不指定路径或者路径为“./”,则在当前运行脚本所在目录下寻找该文件,如include('1.php')或include('./1.php')。如果指定文件的路径为“../”,则在Apache的根目录下寻找该文件,如include('../1.php')。如果要指定根目录下不是当前脚本所在目录下的文件,可以指定其具体位置,如include('../david/1.php')

例如,假设a.php和b.php文件都在当前工作目录下:
a.php中代码为:
<?php
$color = 'green';
$fruit = 'apple';
?>
b.php中代码为:
<?php
echo "A $color $fruit"; 		//输出"A",并给出变量未定义的通知
include 'a.php';			//包含a.php文件
echo "A $color $fruit"; 		//输出"A green apple"
?>

      5.4 流程控制的替代语法                              

      5.5 包含文件操作

                                       

      5.6 实例-回答多项选择题  

                         【例3.8】 综合前面所学的流程控制的内容,编写回答多项选择题的PHP程序。

                           题目要求如下:以下属于Web开发语言的有哪几种?供选择答案:C语言、

                            PHP、FLASH、ASP、JSP。正确答案:PHP、ASP、JSP。

新建EX3_8.php文件,输入以下代码

<form action="" method="post" >
以下属于Web开发语言的有哪几种?<br>
<input type="checkbox" name="answer[]" value="C语言">C语言<br>
<input type="checkbox" name="answer[]" value="PHP">PHP<br>
<input type="checkbox" name="answer[]" value="FLASH">FLASH<br>
<input type="checkbox" name="answer[]" value="ASP">ASP<br>
<input type="checkbox" name="answer[]" value="JSP">JSP<br>
<input type="submit" name=bt_answer value="提交" />
</form>
<?php
if(isset($_POST['bt_answer']))
{
	$answer=@$_POST['answer'];			//$answer是数组
	if(!$answer)				
		echo "<script>alert('请选择答案')</script>";
	$num = count($answer);	//使用count函数取得$answer数组中值的个数
	$anw="";					//初始化$anw为空
	for($i=0;$i<$num;$i++)				//使用for循环
	{
			$anw=$anw.$answer[$i];		//将$answer中的值连接起来
	}
	if($anw=="PHPASPJSP")				//判断是否是正确答案
          echo "<script>alert('回答正确!')</script>";	//弹出提示框提示正确
	else 
	echo "<script>alert('回答错误!')</script>";	//弹出提示框提示错误
}
?>

运行结果如图3.8所示。

3_5_6

说明:在程序中,复选框的名称都为”answer[]”,当php从表单中”answer”中取到的是一个数组,复选框值就存入这个数组中。count()函数返回一个数组中值的个数

posted on 2011-08-22 13:39  平渡飞扬  阅读(1193)  评论(0编辑  收藏  举报