PHP学习

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
  • 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,所以就不去执行后面的操作数
    • & 和 | 在运算时,两边都会被执行
  • 其他运算符 ? : ` @ => -> :: & $
    <ul><li>条件 ? 成立执行这里 : 不成立执行这里</li>
    <li>
    page=isset( _GET[“page”])?$_GET[“page”]:1;`
  • ()改变优先级别

PHP流程控制分支结构

顺序结构

分支结构–条件结构–选择结构

  • 单路分支
//条件bool, truefalse,  > < == !=  & || !  isset()
if(条件)
    执行下面一条语句
if(条件)
{
    代码段;
    代码段;
}
  • 双路分支
    使用else从句
if(条件)
    执行一条语句
else
    执行一条语句
if(条件){
    一条或多条代码 
}else{
    一条或多条代码
}
  • 多路分支
    可以使用 if else if 和 switch case
    //这是一种互斥的关系。
       if(条件){

       }elseif(条件){

       }elseif(条件){

       }else if(条件){

       }else{

       }

       switch(变量){   //变量只用整型和字符串
        case 值:
            代码;
            break;
        case1:
            代码;
            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] )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值