zoukankan      html  css  js  c++  java
  • php的一些新的分支结构以及include问题【include_path】

    按位运算在状态标示中的使用。【减少数据库存储以及更加快速的处理逻辑处理】
    1&1=1
    1=1=2
    速度快节省空间
    【以上即可】


    1.switch做分支处理
    switch(状态量){
    case 值1:
    情况一执行的情形;
    [break;]//可以省略break跳出这个switch【这里就是强制结束的情形,加break可以提高执行效率】
    ...
    default:
    进程default;
    }

    以上即可。
    php在处理switch时,将其当做循环来处理,所以才会导致break使用跳出循环的语法。【也可以使用continue】


    2.for做循环结构
    循环的执行过程:
    先执行循环体,后进行加加运算
    for($i=0;$i<5;$i++) {
    echo $i.'<br>';
    }
    输出结果是:
    0
    1
    2
    3
    4
    以上就表示了循环体内部的执行顺序:
    (1)初始化循环体变量
    (2)根据判断结果,看是否执行循环体
    (3)如果执行循环体之后,对循环体变量进行递变【然后进入下一个循环阶段】

    以上就是循环的结构处理
    【在循环体内也可以对循环体变量进行修改,从而实现循环体内的控制,但是尽量不使用】

    3.while做循环结构
    //条件初始化语句
    while(条件){
    循环体【对循环变量进行操作】
    }

    用于循环条件确定,但是循环次数不确定【相比于for循环来说】
    【while用于对一个不确定的结果中进行循环处理】
    但是在不确定数时for也可以使用。

    另外还有do-while【区别在于,本循环体是先执行后判断,于是条件和正常逻辑有一定的区别】
    do{
    循环体
    }while(条件);

    while和dowhile的区别就在于循环体的执行顺序,其实本质上没有太多区别,就是语法题目会提到。


    4.循环终止【break和continue】
    break将循环体跳出
    continue跳出本次循环【continue之后的代码不会被执行】,进入下一次循环

    循环嵌套情形:
    for ($i=1;$i<10;$i++){
    for($j=1;$j<=$i;$j++){
    echo $i.'*'.$j.'='.$i*$j;
    echo '&nbsp&nbsp&nbsp&nbsp';
    }
    echo "</br>";
    }
    以上表示通过循环嵌套实现乘法口诀表的过程
    嵌套的关键就是如何在被嵌入的循环中合理控制循环变量的关系,便能很轻易的控制循环嵌套
    【二维结构都需要使用循环嵌套】


    5.goto分支【php5.3以上版本可以使用】
    goto相当于综合了流程控制和continue指向要运行的次数情况。
    goto对整个流程的处理更加简单
    <?php
    for($i=0,$j=50; $i<100; $i++) {
    while($j--) {
    if($j==17) goto end;
    }
    }
    echo "i = $i";//这段代码完全不执行
    end:
    echo 'j hit 17';

    //上面的例子输出结果为: j hit 17
    ?>

    实际编程中使用比较少,在函数内进行goto跳转到函数外时,不会正确。
    例如
    function本身有作用域的概念
    【goto是全局时,可以跳到分支中,但是不能跳到循环体内(包括switch语句)】
    【但是循环体内可以使用goto跳转到全局中的情况】
    【goto只是一种对循环体或者分支控制的语法,并不存在对作用域的影响,只是因为作用域的不同,会有不同的作用效果】
    function sayhello(){
    goto outer;
    }
    sayhello();
    outer:
    echo "hello world";
    //这个是会报错的


    6.文件载入
    include、require、require_once、include_once
    将目标文件的代码,载入到当前文件。【这就是include等的出现场景】
    用于框架中的代码重用的场景。
    【注意】
    文件的载入中,文件的类型不重要,我们只看重文件的代码【即使包含文件时HTML,但是只要其内部有php代码,就按照php代码执行】
    【注意这一点,这一点也就是文件载入和file_open()函数的区别】
    include这样的方法,其实是载入文件之后,并执行该文件中可以被执行的代码


    文件载入中的路径问题:
    磁盘的文件地址【网络文件地址http这样协议使用URL来进行文件定义】
    而文件载入中的方法(include)使用磁盘文件地址【include不能使用网络地址上的文件来进行载入】
    【网络中引入文件的方式本身就比较受限】
    【而文件载入使用的路径有绝对路径和相对路径之分】
    对于相对路径和绝对路径不需要太过纠结。

    【注意:】
    包含文件中,使用相对路径时,相对路径相对的当前路径是指代码的执行位置,而不是引入的定义地址。【这也就是框架中使用的都是绝对路径】
    a.php中include(./b.php);//而当b.php文件中也有包含文件的情况出现时,其实此时的当前位置是a.php

    在include不需要考虑输出的问题,因为文件载入针对的本身就是代码的执行,其他文件都可以被引入【例如html文件本身就是指输出】

    只是使用include时,会因为出现header()函数而导致对输出有疑问【需要对输出的header进行研究】
    【因为如果include被包含的文件中使用header的话,有可能包含文件的内容已经出现输出的问题,会出现报错的问题】

    7.include_path的使用方法【框架中常用的函数】

    include中出现'./'和单纯指出当前位置的区别:【./file.php与file.php在包含方面的区别】
    './'指的只能是执行代码的文件的当前路径。
    没有'./'指代的当前文件的当前路径【正常情况下再当前路径下查找包含文件,但是如果执行代码位置处不能正常包含,那么便会在代码所写的位置上进行文件载入】
    注意这一点例子。
    另外【针对没有'./'声明的情况。如include('file.php');用来标示包含时】
    include中文件载入,还会查找用户自定义的路径【如php设置中的include_path情况】
    而且require的顺序是:【require(file.php)方法的使用时查找文件的顺序】
    (1)先查找文件声明的路径【include_path】【这个的优先级最高,也是框架中项目的最先路由的位置】
    (2)查找代码执行的位置
    (3)查找代码定义的位置

    set_include_path()函数的用法
    include_path()的用法场景本身就是用在大型项目中用作指定路由的情况【这样可以将最常被引入的文件统一放在一个路径中】
    【公司现在的项目就使用这个函数用来指定控制器文件和compenont组件】
    【注意这样的情况下,包含文件时,不能使用‘./’来表示当前路径,当然引入的地址本身也不是当前路径】

    多个目录进行set_include_path()时,如果多次使用set_include_path()时,后面写set_include_path()会覆盖前面的set_include_path()函数。但是可以一次性设置多个【并且进行获取已有的设置】,使用分号进行分割处理即可【window下是';'linux下是':',php使用预定义常量(PATH_SEPARATOR)来表示该分割符!!!】
    例如:set_include_path('filedir'.';'.'get_include_path');//这样便能新添加生效的搜索路径【重点!!!!】
    文件和目录的遍历问题是一个系统需要特殊注意的问题

    【特殊注意这一点的使用情况】
    './'或者'../'的文件形式就不能使用include_path设置方法

  • 相关阅读:
    Maven学习笔记
    [学习笔记] 网络流
    [Contest on 2021.11.3] 女子口阿
    [杂题合集] 25 岁小伙突然没了心跳,他的习惯很多年轻人都有!
    CSP 2021 提高组游记
    [题目小结] 可持久化数据结构
    [学习笔记] 无向图和有向图的连通分量
    [Contest on 2021.10.17] HustOJ 就是个 **
    [Contest on 2021.10.15] 细思极恐
    妖怪寺外,灯火通明
  • 原文地址:https://www.cnblogs.com/shuoshuren/p/4200158.html
Copyright © 2011-2022 走看看