PHP在web开发中的应用
收集表单数据
生成动态网页
字符串处理
动态输出图像
服务器端文件系统操作
编写数据库支持的网页
会话跟踪控制
处理XML文件
支持利用大量的网络协议
服务器端的其他相关操作
第一个PHP脚本程序
- 编写一个后缀名为.php文件
- 上传到Web服务器的文档根目录下
- 通过浏览器访问Web服务器管理下的PHP文件, 就可以运行PHP文件
- 在PHP文件中可以编写HTML、CSS、JavaScript等 语言,但使用起始标记
<?php和结束标记?>
之前的代码用PHP应用服务器解析,将解析后的代码发到客户浏览器,在这个标记这外的都直接发送给客户端,客户端再用浏览器解析
PHP语言
<?php ?> 可以加在任意地方
<?php
echo "11111111111111111 <br>";
$hello="############## <br>";
?>
<?=$hello ?>
<?
echo "2222222222222 <br>";
?>
<%
echo "333333333333333 <br>";
%>
<script language="php">
echo "44444444444444444 <br>";
</script>
PHP语言标记
<?php ?>
推荐使用这个
如果?>之后就是脚本结束可以不加,建议不要加<? ?>
<?=$var ?>
<% %>
<script language=“php”> </script>
配置php.ini使<? ?><% %>
显示正确
支持<??>
和<%%>
需要把php.ini中的short_open_tag 设置为On,还有 Allow ASP-style <% %> tags前面的分号去掉,把asp_tags设置为On就可以了。
指定分隔符“分号”
语句分两种:
- 一种是功能执行语句
- 后面一定要加分号
- 与?>最近一条语句可以不加分号,建议都加分号
- 一种是结构定义语句
- 后面一定不要加分号
程序中的注释
//
单行注释/* */
多行注释,中不能再包含多行注释#
脚本注释/** */
文档注释
- 1.写过不合适的代码注释
- 2.写帮助文档
- 3.调试程序
- 注意: 注释要写在代码的上面或是右边
在程序中使用空白
空白:空格 tab 换行
PHP中使用变量
变量的声明
- 如果在用到数据时,需要用到多次就声明为变量使用。
- $变量名=值
- 强类型语言中(C,Java),声明变量一定要先指定类型(酒瓶)
- PHP是弱类型的语言,变量的类型由存储的值决定(瓶子)
- Isset(); 判断一个变量存不存在
- Unset(); 删除一个变量
变量的命名
- 变量前一定要使用”$”, 声明和使用都要有这个符号。
- 不能以数字开头
- 不能使用PHP的运算符号+ - * / % & .
- PHP可以使用系统关键字作为变量名
- 注意:PHP变量区分大小写,(只有变量和常量区分大小写,其它不区分)
- 变量名称一定要有意义,可以使用英文单词,也可以使用汉语拼音。
可变变量
一个变量的变量名可以动态设置和使用
<?php
$one="######";
$two="one";
$three="two";
$four="three";
echo $four."<br>";
echo $$four."<br>";
echo $$$four."<br>";
echo $$$$four."<br>";
three
two
one
######
变量的引用赋值
使用一个“&”符号加到将要赋值的变量前面(源变量)
<?php
$one=10;
$two=&$one;
$one=100;
echo $one."<br>";
echo $two."<br>";
100
100
变量的类型
- PHP是弱类型的语言
PHP中共有8种类型
- 4种标量
- 整型:int integer
- 布尔型:bool boolean
- 浮点型:float, double, real
- 字符串:string
- 2种复合类型
- 数组: array
- 对象 : object
- 2种特殊类型
- 资源类型:resource
- 空类型:null
- 4种标量
Var_dump(变量或值) ; //既可以查看变量或值的类型,又可以看数据
<?php
$var=10;
echo '<pre>';
var_dump($var);
echo '</pre>';
echo "---------------------";
$var=34.5;
echo '<pre>';
var_dump($var);
echo '</pre>';
echo "---------------------";
int(10)
---------------------
float(34.5)
---------------------
其他变量的声明
<?php
$int=10; //十进制声明
$int=045; //以0开头的表示以八进制声明一个变量
$int=0xff;//以0x或0X开头的表示以16进制声明一个变量
$int=-5;
//整数的最大值 4字节 2的32次方 , 214483647
$float=10;
$float=-10;
$float=3.14E5;
$float=3.14E+5;
$float=3.14E-5; //E e 均可
//以下都是FALSE的情况
$bool=false; //true
$bool=0; //非0的数
$bool=0.000; //有非0的数出现
$bool="";
$bool=" ";
$bool=null; //非空代表
$bool="0"; //非空非0的字符串
$bool=array(); //有成员的数组
//字符串的声明
$str='aa\'aaa';
$str="aa\"aaa";
$str=<<<aaaaa;
$str=`aaaaa`;
//单引号和双引号的区别
//1、单引号和双引号都可以声明字符串
//2、声明的字符串没有长度限制
//3、在双引号的字符串中,既可以直接解析变量,又可以直接使用转义字符
//4、在单引号的字符串中,不可以解析变量,也不可以使用使用转义字符(可以转义单引号本身,也可以转义字符"\")
//5、在双引号中不能再使用双引号,在单引号中不能使用单引号
//6、最好使用单引号
$int=10;
$str="aa{$int}a\na\ra\taa{$int}";
echo $str;
//定界符号声明字符串,大量字符串(可以用转义字符)
//hello是一个自定义的字符串,它后面不能有任何字符,空格也不可以
//也要以这个字符结束,但结束前也不能有任何字符
$str=<<<hello
hello;
PHP的数据类型与常量使用
数据类型之间相互转换
- 一种是强制转换:
setType(变量,类型)
//类型int, integer, float, double,real, bool, boolena, string, array, object
这个函数将原变量的类型改变
查看类型:var_dump();
- 在赋值前使用(类型)的形式,如
$a=(int)"123abc";
,不会改变原变量的类型 $变量=intval(变量或值);
$变量=floatval(变量或值);
$变量=stringval(变量或值);
- 注意:
整型在内存中占4个字节, 2.147e9(max),浮点型在内存中占8个字节,浮点型转换成整型时会出现问题
字符串在转换时只会转换开头的几位,如果开头没有数字则结果为0。
- 一种是自动转换:
最常用的方式,因为这种我们开发时不用去管理类型,变量会根据运行环境自动转换
与变量和类型有关的一些常用函数
isset(); //判断一个变量存不存在 值如果是null,表示变量不存在
empty(); //判断一个变量是否为空,"",null
unset(); //删除一个变量
setType(); //设置类型
getType(); //得到类型 var_dump();既有类型也有值
变量类型测试函数
is_bool();
is_int() is_integer() is_long()
is_string();
is_float() is_double() is_real()
is_array() //打印数组 print_r($array);
is_object()
is_resource()
is_null()
is_scalar() //判断是否是标量
is_numberic() //判断是否是数字或者数字字符串
is_callable() //判断是否是有效的函数名
常量的声明与使用
1、常量是一个简单值的标识符
2、常量定义后不能再改变它的值,也不能使用unset()取消
3、常量可以不用理会变量范围的规则而在任何地方都可以定义和访问
4、常量使用define("常量名",值);
5、常量名在任何时候都不适用 $
6、常量名称习惯都使用大写
7、常量的值只能用标量类型(int,float,bool,string)
8、常量一定要在声明时就给值
9、define("常量名",值);
查看常量存不存在
预定义常量和魔术常量
魔术常量:
__FILE__ //文件名
__LINE__ //行数
__FUNCTION__ //函数名
PHP_VERSION__ //PHP版本
PHP运算符和表达式
运算符号(PHP)操作符号
- 算术运算符 + - * / % ++ –
- % 有两个目的:整除运算;控制范围
不要用小数,也不要用负数,%会把两边的数转为整数后再进行整除。
- % 有两个目的:整除运算;控制范围
- 字符串运算符 . 可以叫连接运算符号
- 赋值运算符 = += -= *= /= %= .=
- 比较运算符(关系运算符、条件运算符) > < >= <= == === != 或<> !==
- 比较后的结果只有一种,boolean true false
- != <> 不等于
- === 比较时不仅要求内容相同,也要求类型相同
- !== 可以判断内容不相同,也可以判断类型不相同
- 逻辑运算符 && 或and ||或 or ! 或not
- 位运算符 & | ^ ~ << >> >>>
- 短路问题:&& 和 || 会发生短路
- &&在做运算时,如果前面的数是false,则后面是否是true,整个表达式都是false,所以就不去执行后面的操作数
- ||在做运算时,如果前面的数是true,则后面是否是false,整个表达式都是true,所以就不去执行后面的操作数
- & 和 | 在运算时,两边都会被执行
- 其他运算符 ? :
` @ => -> :: & $
page=isset( _GET[“page”])?$_GET[“page”]:1;`
<ul><li>条件 ? 成立执行这里 : 不成立执行这里</li>
<li> - ()改变优先级别
PHP流程控制分支结构
顺序结构
分支结构–条件结构–选择结构
- 单路分支
//条件bool, true或false, > < == != & || ! isset()
if(条件)
执行下面一条语句
if(条件)
{
代码段;
代码段;
}
- 双路分支
使用else从句
if(条件)
执行一条语句
else
执行一条语句
if(条件){
一条或多条代码
}else{
一条或多条代码
}
- 多路分支
可以使用 if else if 和 switch case
//这是一种互斥的关系。
if(条件){
}elseif(条件){
}elseif(条件){
}else if(条件){
}else{
}
switch(变量){ //变量只用整型和字符串
case 值:
代码;
break;
case 值1:
代码;
break;
default:
代码;
}
//如果是判断一段范围我们使用elseif
//如果是单个值匹配我们使用switch
- 嵌套分支
最好不要超过五层。
if(){
if(){
}else{
if(){
}
}
}else{
if(){
}else{
swicth(){
}
}
}
循环结构
- while循环
if(表达式)
只一次语句
while(表达式)
反复执行一条语句;
while(表达式){
反复执行这个循环体
}
while是先判断条件,成立则执行
- do-while循环
do-while是先执行再判断条件
- for 循环
for(初使化;条件表达式;增量){
循环体
}
- 根据循环条不同有两种类型的循环
- 计数循环 for
- 条件型循环 while do-while
- 几个和循环有关的语句
break number; //退出几层循环
continue; exit; return;
PHP实现简单网页计算器
<html>
<head>
<title>PHP实现简单计算器</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<?php
$num1=true;
$num2=true;
$numa=true;
$numb=true;
$message="";
if(isset($_GET["sub"])){
if($_GET["num1"]==""){
$num1=false;
$message.="第一个数不能为空";
}
if(!is_numeric($_GET["num1"])){
$numa=false;
$message.="第一个数不是数字";
}
if($_GET["num2"]==""){
$num2=false;
$message.="第二个数不能为空";
}
if(!is_numeric($_GET["num2"])){
$numb=false;
$message.="第二个数不是数字";
}
if($num1&&$num2&& $numa && $numb){
$sum=0;
switch ($_GET["ysf"]) {
case "+":
$sum=$_GET["num1"]+$_GET["num2"];
break;
case "-":
$sum=$_GET["num1"]-$_GET["num2"];
break;
case "*":
$sum=$_GET["num1"]*$_GET["num2"];
break;
case "/":
$sum=$_GET["num1"]/$_GET["num2"];
break;
case "%":
$sum=$_GET["num1"]%$_GET["num2"];
break;
}
}
}
?>
<body>
<table align="center" border="1" width="500">
<caption><h1>计算器</h1></captiom>
<form action="1.php">
<tr>
<td>
<input type="text" size="5" name="num1" value="<?php if(isset($_GET["num1"])) echo $_GET["num1"] ?>">
</td>
<td>
<select name="ysf">
<option value="+" <?php if(isset($_GET["ysf"])) echo $_GET["ysf"]=="+"?"selected":"" ?>>+</option>
<option value="-" <?php if(isset($_GET["ysf"])) echo $_GET["ysf"]=="-"?"selected":"" ?>>-</option>
<option value="*" <?php if(isset($_GET["ysf"])) echo $_GET["ysf"]=="*"?"selected":"" ?>>*</option>
<option value="/" <?php if(isset($_GET["ysf"])) echo $_GET["ysf"]=="/"?"selected":"" ?>>/</option>
<option value="%" <?php if(isset($_GET["ysf"])) echo $_GET["ysf"]=="%"?"selected":"" ?>>%</option>
</select>
</td>
<td>
<input type="text" size="5" name="num2" value="<?php if(isset($_GET["num2"])) echo $_GET["num2"] ?>">
</td>
<td>
<input type="submit" name="sub" value="计算">
</td>
</tr>
<?php
if(isset($_GET["sub"])){
echo '<tr><td colspan="5">';
if($num1&&$num2&& $numa && $numb){
echo "结果:".$_GET["num1"]." ".$_GET["ysf"]." ".$_GET["num2"]."=".$sum;
}else{
echo $message;
}
echo '</td></tr>';
}
?>
</form>
</table>
</body>
</html>
PHP中的函数声明
函数的定义
函数是一个被命名的、独立的代码段,它执行特定任务,并可以给给调用它的程序返回一个值
函数的优点
- 提高程序的重用性
- 提高程序的可维护性
- 提高软件的开发效率
- 提高软件的可靠性
- 控制程序的复杂性
函数的声明
- 函数必须调用才能执行,可以在声明之前调用,也可以在函数声明之后调用
- 函数名命名和变量一样
- 函数在声明时不能重名
- 可以通过向函数传递参数,改变函数的行为
- 形参:就在声明函数时,声明的参数,参数就是变量
- 实参:调用函数时传给形参数值(数据,也可以是变量)
- 如果没有返回值则称为过程
- 通过使用return语句返回数据
- 函数执行到return语句就结束,所以不要在这个语句后写代码,也可以使用return结束函数的使用
function 函数名(){
函数体
}
function 函数名(参数1,参数2,参数...) //参数列表,如果有多个作用,分开
{
函数体
}
function 函数名(){
函数体
返回值
}
function 函数名(参数列表){
函数体
返回值
}
PHP的变量的范围
- 局部变量: 在函数中声明的变量就是局部变量,只能在自己的函数内部使用。
- 全局变量: 在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可使用。
- PHP的变量分不出是,声明还是使用。
- 在PHP中使用全局变量,要通过global关键字将这个全局变量包括到函数中才能使用到,在global声明之后才是使用全局的变量
- 参数就是局部变量,这个局部变量可以调用时去赋值。
PHP的静态变量
- 静态变量只能声明在函数中(类中),不能在全局声明
- 在变量前使用static声明静态变量;
- 作用:一个变量可以在同一个函数在多次调用中共用。
- 静态变量在静态代码段中保存
- 一个函数多次调用之间共用,但只在第一次调用函数时声明到内存,以后再调用,就不再声明,而直接使用
- -
变量函数
如果一个变量后面有括号$var=hello $var()
,就将寻找与变量值同名的函数 hello();
函数
- 函数的功能————决定是否使用这个函数
- 函数的参数————决定函数怎么调用 —有几个参数,传什么类型的值
- 函数的返回值———-调用后怎么处理这个函数
PHP给2000多个函数,都属于系统函数,都可以通过名称直接使用。
一定要先使用系统函数,如果系统函数没有你想要的功能,再去自己定义函数
- 常规函数
bool copy ( string source, string dest ) - 带有mixed , mixed表示可以传任何类型的数据
bool chown ( string filename, mixed user ) - 带有&参数的函数,表示引用赋值,这个参数不能传值,只能传一个变量,然后函数将变量的值改变,我们在使用这个变量时,值也是变化的
bool arsort ( array &array [, int sort_flags] ) - 默认函数,带有[]的函数,表示这个参数是可选的,如果你传值了就使用你传的值,如果没有传值则使用默认值
- 直接在声明函数时,就为参数给初值。
- 可选值和必须值, 必须从后向前设置
bool arsort ( array &array [, int sort_flags] )
- 带有…的参数函数, …表示可以传任意多个参数
int array_unshift ( array &array, mixed var [, mixed …] )
func_get_args(); 获取所有参数形成一个数组
func_num_args(); 获取参数的个数
func_get_arg(int i); 获取第i个参数 - 回调函数 带有callback, 就是调用这个函数时需要我们传一个函数进来(函数名,函数名字符串)
array array_filter ( array input [, callback callback] )