PHP基础(三) 学习笔记

目录

一、流程控制

二、分支结构

    1、if的分支

    2、switch结构

三、循环结构

    1、for循环

    2、while循环

    3、do...while循环

    4、循环的结束与退出

四、流程控制语句的标签语法

五、文件载入

    1、介绍

    2、语法

    3、引入路径问题

    4、include与require区别

    5、__DIR__\__FILE__

六、错误处理

    1、错误的分类

    2、错误代码

     4、错误的控制设置

     5、错误的日志文件的设置


一、流程控制

三种流程控制:顺序结构、分支结构、循环结构;

二、分支结构

    1、if的分支

        ①、单分支:

    $sex = '女';
    if($sex == '男'){
        echo "man";
    }
    if($sex == '女'){
        echo "women";
    }

             ②、双分支

    $sex = '女';
    if($sex == '男'){
        echo "man";
    }else if($sex == '女'){
        echo "women";
    }

             ③、多分支

    $sex = '女';
    if($sex == '男'){
        echo "man";
    }else if($sex == '女'){
        echo "women";
    }else{
        echo "数据不合法";//缺省语句
    }

    2、switch结构

         当判断条件比较多时,php提供了一个switch分支结构

         语法:

                switch(变量){

                     case  值1:

                              语句体1;

                               break;

                     case  值2:

                              语句体2;

                               break;

                     case  值3:

                              语句体3;

                               break;

                      defaylt:

                               缺省语句体;

               }

               每个语句后加break,当符合条件运行完当前语句体后跳出switch。

               若省略break,则当符合条件是运行当前及剩余的所有语句。

   $day = '';
   switch ($day){
       case 1:
           echo "星期一";
           break;
       case 2:
           echo "星期二";
           break;
       case 3:
           echo "星期三";
           break;
       case 4:
           echo "星期四";
           break;
       case 5:
           echo "星期五";
           break;
       case 6:
           echo "星期六";
           break;
       case 7:
           echo "星期日";
           break;
       default:
           echo "数据不合法";
   }

              if和switch的区别

                    if结构的条件可以表示一个范围。

                    switch结构主要用于表示一个具体的值。

三、循环结构

                break        跳出循环

               continue    跳过当前循环体剩余部分进入下一个循环

    1、for循环

           语法:

                 for(循环控制变量初始化;表达式;循环控制变量的更改){

                       //循环体
                 }

   for($i=1;$i<=100;$i++){
       echo $i,"<br/>";
   }

                 循环嵌套 (解决具有行列性质的问题)

   //输出10行10列的表格
   $tab = "<table border='1' rules='all' width='100' height='100'";
   for($j=1;$j<=10;$j++){
       $tab.="<tr>";
       for($i=1;$i<=10;$i++){
           $tab.="<td></td>";
       }
       $tab.="</tr>";
   }
   $tab.="</table>";

    echo $tab;

    2、while循环

             语法:

                     while(表达式){

                          //循环体

                    }


    $i=1;//循环控制变量初始化
    while($i<=100){//表达式
        echo $i,"<br/>";//循环体
        $i++;//循环控制变量的更改
    }

             for与while的区别:

             对于for循环结构,主要用于循环次数已知或根据某一条件可以确定

             while主要用于循环次数未知的循环

    3、do...while循环

             语法:

                     do{

                             //循环体

                     }while(表达式)

             说明:

                     首先执行循环体

                     循环体结束后,再判断表达式是否成立,不成立则直接结束循环结构,成立则再执行循环体。

                    

    $i=1;//循环控制变量初始化
    do{
        echo $i;
        $i++;//循环控制变量的更改
    }while($i<=100);//表达式

    4、循环的结束与退出

              ①、continue

                      语法:continune  【n】

                      说明:n的取值是一个整数,默认为1;

                                  n主要用于多层循环嵌套的情况;

                                  结束当前循环结构的本次循环,继续上n层循环结构的下一次循环。

                                  可运行下面代码自行理解。

for($j=1;$j<3;$j++) {//a循环
    for ($i = 1; $i < 10; $i++) {//b循环
        if ($i % 3 == 0) {
            continue 1;//当前循环体后的语句不执行进入b循环的下一次循环
        }
        echo $i, "<br/>";
    }
}

echo "<br/>";

for($j=1;$j<3;$j++) {//a循环
    for ($i = 1; $i < 10; $i++) {//b循环
        if ($i % 3 == 0) {
            continue 2;//当前循环体后的语句不执行进入a循环的下一次循环
        }
        echo $i, "<br/>";
    }
}

             ②、break

                      语法:break【n】

                      说明:n的取值是一个整数,默认为1;

                                  n主要用于多层循环嵌套的情况;

                                  直接结束上n层循环结构

                                  可运行下面代码自行理解。

for($j=1;$j<3;$j++) {//a循环
    for ($i = 1; $i < 10; $i++) {//b循环
        if ($i % 3 == 0) {
            break 1;//直接结束b循环
        }
        echo $i, "<br/>";
    }
}
    echo "<br/>";

for($j=1;$j<3;$j++) {//a循环
    for ($i = 1; $i < 10; $i++) {//b循环
        if ($i % 3 == 0) {
            break 2;//直接结束a循环
        }
        echo $i, "<br/>";
    }
}

四、流程控制语句的标签语法

           用纯php生成html

<?php
/**
 * Created by PhpStorm.
 * User: lgz
 * Date: 2019/3/18
 * Time: 8:30
 */
    $data=[
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000]
    ];
    $tab ="<table border='1' rules='all'>";
    $tab.="<tr><th>id</th><th>品牌</th><th>商品名</th><th>价格</th></tr>";
    for($i=0;$i<4;$i++){
        $tab.="<tr>";
            $tab.="<td>".$data[$i][0]."</td>";
            $tab.="<td>".$data[$i][1]."</td>";
            $tab.="<td>".$data[$i][2]."</td>";
            $tab.="<td>".$data[$i][3]."</td>";
        $tab.="</tr>";
    }
    $tab.="</table>";
    echo $tab;

           php在将php代码嵌入到html文档时,又提供了一种标签语法。

<?php
    //模拟从数据库读取的数据
    $data=[
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000],
        [10,'huanwei','mate 10',3000]
    ];
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1" rules="all">
    <thead>
    <tr>
        <td>id</td>
        <td>品牌</td>
        <td>商品名</td>
        <td>价格</td>
    </tr>
    </thead>
    <tbody>

        <?php for($i=0;$i<4;$i++){ //标签语法?>
            <tr>
                <td><?php echo $data[$i][0] ?></td>
                <td><?php echo $data[$i][1] ?></td>
                <td><?php echo $data[$i][2] ?></td>
                <td><?php echo $data[$i][3] ?></td>
            </tr>
        <?php } ?>
    </tbody>
</table>
</body>
</html>

           ①、if标签语法

                   标准格式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php if(1>2):?>
        <p>true</p>
    <?php elseif(3>4):?>
        <p>3>4</p>
    <?php else:?>
        <p>3<4</p>
    <?php endif;?>
</body>
</html>

                  简化格式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php if(1>2){ ?>
        <p>true</p>
    <?php }else if(3>4){?>
        <p>3>4</p>
    <?php }else{ ?>
        <p>3<4</p>
    <?php } ?>
</body>
</html>

            ②、for标签语法

                  标准格式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php for($i=1;$i<4;$i++): ?>
        <p>hello</p>
    <?php endfor ?>
    <br/>
    
</body>
</html>

                  简化格式: 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php for($i=1;$i<4;$i++){ ?>
        <p>hello</p>
    <?php } ?>
</body>
</html>

             ③、whle标签语法

                  标准格式:

<?php
//模拟从数据库读取的数据
 $i=0;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php while($i<4): ?>
        <p>hello</p>
    <?php $i++; endwhile ?>
</body>
</html>

                  简化格式: 

<?php
//模拟从数据库读取的数据
 $i=0;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <?php while($i<4){ ?>
        <p>hello</p>
    <?php $i++; }?>
</body>
</html>

五、文件载入

    1、介绍

                        在实际开发中,经常会在一个php文件中引入其他的文件

                        被引入的文件可以是html文件也可以是php文件

    2、语法

                        ①、require

                                require(文件名)

                                require_once(文件名)

                        示例:

                                test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1" rules="all">
    <thead>
    <tr>
        <td>id</td>
        <td>品牌</td>
        <td>商品名</td>
        <td>价格</td>
    </tr>
    </thead>
    <tbody>

    <?php for($i=0;$i<4;$i++){ //标签语法?>
        <tr>
            <td><?php echo $data[$i][0] ?></td>
            <td><?php echo $data[$i][1] ?></td>
            <td><?php echo $data[$i][2] ?></td>
            <td><?php echo $data[$i][3] ?></td>
        </tr>
    <?php } ?>
    </tbody>
</table>
</body>
</html>

                                test1.php

<?php
//模拟从数据库读取的数据
$data=[
    [10,'huanwei','mate 10',3000],
    [10,'huanwei','mate 10',3000],
    [10,'huanwei','mate 10',3000],
    [10,'huanwei','mate 10',3000]
];
    require "test.html";
?>

                        ②、include

                               include(文件名)

                              include_once(文件名)

      目的:

             当前文件(php)有数据,想在被引用的文件中显示

             在当前文件(php)中想使用另一个文件(php)中的功能性代码

    3、引入路径问题

              在实际项目中,对于html文件,不允许用户直接请求,而是指向一个php文件,让php文件引用这个html文件

              当一个php文件引入一个html文档时,html文件本身也会引入一些其他的文件(img、css、js等等)。这时会发生路径更

      改的问题。路径以当前php文件所在的路径为起点。

              用./返回上层目录(.返回上一级,..返回上两级,自行试验)

              通过域名再次访问图片

               test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <!--
        <img src="D:/wamp64/www/lgz/public/123.jpg" />
        在HTML中通过绝对路径是访问不了的,因为HTML最终用户浏览器上运行,而非你的本地运行
    -->
    <img src="./public/123.jpg" />
    <img src="http://localhost/lgz/public/123.jpg" />
</body>
</html>

               test1.php

<?php

    include "public/test.html";

    4、include与require区别

              include在引入文件时,如果被引入的文件不存在则会报错,但程序还会继续向下执行

              require在引入文件时,如果被引入的文件不存在,则会中断程序的执行

              require一般用于引入php文件,因为php里面一般书写的是功能性代码。

              include一般用于引入html文档。

 

              include、require与include_once、require_once的区别

              include_once、require_once每次在引入文件时,会检查所要引入的文件之前有没有被引入过,如果有则不在引入。

              (如果在引入php中的函数时,多次引入则会因重复定义函数而报错)

    5、__DIR__\__FILE__

              __FILE__             用于获取文件所在的完整文件名

             __DIR__               用于获取文件所在的路径

              __FILE__与__DIR__并不会被引入后所更改。

六、错误处理

    1、错误的分类

               ①、编译错误

                       在编译过程中发生的错误,大多是由于程序员书写错误导致的

               ②、执行错误

                       在编译通过后,在执行阶段发生的错误,错误一旦发生,会根据错误的等级来决定是否中断程序的执行

               ③、逻辑错误

                       由于程序员的逻辑不严谨,而产生的错误

    2、错误代码

               ①、系统错误

                       E_ERROR                       致命错误,一旦发生中断程序执行

                       E_WEEING                      警告错误,不中断程序执行

                       E_NOTICE                       提示错误,不中断执行

                       E_PARSE                         编译错误,中断执行

 示例:自行通过调整语句顺序,看是否发生中断程序

<?php
//模拟从数据库读取的数据
    echo "<h3>系统错误</h3>";
    //gettype();  是一个函数,用于获取变量的数据类型
    gettype($v);//传递的变量未定义

    gettype();//未传递一个变量

    myfunction();//自己随便写的方法,未定义

               ②、自定义错误

                       E_USER_ERROR            用户级(用户自定义)的致命错误,中断程序

                       E_USER_WRRING          用户级(用户自定义)的警告错误,不中断程序

                       E_USER_NOTICE            用户级(用户自定义)的提示错误,不中断程序

     3、错误的触发

                ①、系统错误的触发

                        程序员无法干涉系统错误的触发,系统错误由php自己检测并触发的

                ②、自定义的错误

                       trigger_error()

                       语法:

                               trigger_error(msg,type);

                       说明:

                               msg    错误描述信息

                               type    自定义错误代码(E_USER_ERROE、E_USER_WRRING、E_USER_NOTICE);

不使用错误处理机制仅提示:

<?php

    function m_list($arr){
        if(!is_array($arr)){
            echo '参数的类型不正确';
        }
        for($i=0;$i<count($arr);$i++){
            echo $arr[$i],'<br/>';
        }
    }
    $arr = [10,20,30,40];
    $a = 1;
    m_list($a);

 使用错误处理机制:

<?php

    function m_list($arr){
        if(!is_array($arr)){
            trigger_error('参数的类型不正确',E_USER_ERROR);
        }
        for($i=0;$i<count($arr);$i++){
            echo $arr[$i],'<br/>';
        }
    }
    $arr = [10,20,30,40];
    $a = 1;
    m_list($a);

 

         提示:

                 使用错误处理机制的好处是,可以将错误记录。默认会被记录到apache/logs/error.log。由于我在php.ini中设置了错误日志的记录位置,所以我的日志路径为D:\wamp64\logs\php_error.log

     4、错误的控制设置

                 php错误控制可以在php.ini中进行,我们可以控制错误是否显示,还可以控制显示哪一类的错误

                 ①、控制是否显示错误

                        display_errors = on    显示错误

                        display_errors = off    关闭错误的显示

                 ②、控制是否显示错误

                        error_reporting =

<?php
//模拟从数据库读取的数据
    ini_set('error_reporting',E_NOTICE | E_WARNING);
    //显示E_NOTICE和E_WARNING的错误信息
    //要显示全部 则value取E_ALL
    //E_ALL & ~E_NOTICE  显示除了E_NOTICE的其他错误信息
    echo "<h3>系统错误</h3>";
    //gettype();  是一个函数,用于获取变量的数据类型
    gettype($v);//传递的变量未定义

    gettype();//未传递一个变量

    myfunction();//自己随便写的方法,未定义

     5、错误的日志文件的设置

                 我们可以控制是否记录错误,以及错误日志的记录位置

                ①、是否记录错误

                        log_errors=on    记录错误

                        log_errors=off    不记录错误

                ②、错误记录的位置

                        如果没有设置error_log默认是记录到apache的错误日志中\logs\error.log(不推荐)

                       error_log=syslog    会记录到操作系统的日志中(不推荐)

                       error_log=文件名    记录到自定义的位置

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值