每日学习php记录

169 阅读1分钟

PHP

流程控制

  • if else判断
//php的流程控制  适合在写html嵌套
$status = false;
$num = 1;

if($status):
    echo '1';
else:
    echo '0';
endif;

echo '<hr/>';

if($num > 1):
    echo $num;
elseif ($num >2):
    echo $num;
elseif ($num >3):
    echo $num;
else:
    echo $num;

endif;
  • switch判断

    /**
     * 适用于有判断有规律的
     * 
    */
    
    $status = 'error';
    switch ($status) {
        //这样写适合判断多种可能性  相当于  或
        case 'success':
        case 'abc':
            echo 'abc';
            break;
        
        case 'error':
            echo 'error';
        break;    
    
        default:
            echo 'none';
            break;
    }
    
  • while循环

    //while循环
    $num = 10;
    while($num>0){
        echo ($num--).'<hr/>';
    }
    
  • do while循环

    // do while循环
    do {
        if(is_null($num)){
            $num=10;
        }
        echo $num--;
    }
    while ($num > 0);
    
    do {
        if(!isset($num)){
            $num=10;
        }
        if($num==0){
        break;
        }
        echo $num--;
    }while(true);
    

    while和do while循环的区别就是先判断还是先执行


文件引入

  • includerequire语句用于在执行流中插入写在其他文件中的有用的代码,二者除了处理错误的方式不同之外,其他方面都是相同的。
    • include是抛出一个警告可继续执行;
    • require是抛出一个致命不可继续执行。
  • 已经用include或者require加载过一个文件的方法,再另一个页面中也加载了该页面这样会报错,方法被定义。只需要把导入的方式改成include_oncerequire_once这样就不会报错
  • include_once和require_once都是来保证不会被多次加载的,控制一次加载。

php函数

  • 函数是有返回值的,即使里面没有数据也有返回值,值为null

    function user(){
        // return 'lin';
    }
    
    var_dump(user());
    //null
    
  • 命名空间namespace

    • 可以用命名空间来隔离函数,因为当我们导入多个文件的时候,难免函数名的污染,有个别文件中的函数命名可能会一直,所以我们可以使用namespace的方法来隔离这样的情况发生

    • 文件 1

      <?php
      namespace one;
      function show(){
          echo 1;
      }
      
    • 文件 2

      <?php
      namespace Two;
      function show(){
          echo 2;
      }
      
    • 调用1、2的文件

      <?php
      require '1.php';
      require '2.php';
      
      echo one\show();
      echo '<hr/>';
      echo Two\show();
      
  • 函数传值传址

    function mobile($tel){
        return substr($tel, 0, -4).'****';
    }
    echo mobile('12222222222').'<br/>';
    
     function show ($var){
         //传值
         $var++;
         echo $var;
     }
    /*
     * 传值和传址
     * 传值相当于copy开辟一个新的内存地址,传址就是俩个对象指向同一个内存地址
     */
    function show (&$var){
        //传址
        $var++;
        echo $var;
    }
    $var = 1;
    show($var);
    echo '----------------';
    echo $var;
    
  • 点语法

    • 方便我们对传参的赋值
    //点语法
    function sum(...$vars) {
        //print_r($vars);
        return array_sum($vars);
    }
    echo sum(1,2,45,4,8,7,4,5,6);
    
    
  • 严格模式

    • 严格模式限定了,代码的稳定性,使得代码更加严谨
    /* 严格模式 */
    declare(strict_types = 1);
    
    function show(int ...$num){ //int是限定了参数的类型,确保了参数的健壮
        return array_sum($num);
    }
    try {
        echo sum(1,2,3,4,5,6,'7');
    } catch (\Throwable $th) {
        $th -> getMessage();
        echo '出现错误'.$th;
    }
    
    • 如果参入的值,有空值,那么我们可以这样来写 ?sting 这样可以让空值也传进来,但是要明确的返回一个null

      虽然函数默认返回null,但这样是不行的,必须是明确的返回一个null

    /*如果参入的值,有空值,那么我们可以这样来写。这样可以让空值也传进来,但是要明确的返回一个null
        虽然函数默认返回null,但这样是不行的,必须是明确的返回一个null
    */
    function sum(): ?string{ 
        //  return 1; //这样会报错因为,这里限定了参数为string类型
        return null;
    }
    echo sum();
    
    

    • 拿到函数作用域之外的变量,的几种方式

      /* 传址 */
      $name = '琳';
      function show(&$name){
          echo $name;
      }
      show($name);
      
      
      /* global引入 */
      $name = '琳';
      
      function show($name){
          global $name;
          echo $name;
      }
      show($name);
      
      /* 超全局数组 */
      $name = '琳';
      
      function show($name){
          echo $GLOBALS['name'];
      }
      show($name);
      
      
    • 静态变量

      • 只会执行一次,并且使变量的值永久保留在函数体中
      function sum(...$nums): int {
          static $count = 0; //他只会第一次执行函数的时候执行,下一次就不会再执行,使变量在函数体内持久保留
          return $count += array_sum($nums);
      }
      
      echo sum(1,2,3);
      echo '<br/>';
      echo sum(1,2,3);
      
      
    • 变量函数

      • 把函数当初值,赋值给变量,使变量有函数的作用
    function sum(){
        return 'function.cn';
    }
    $fun_var = 'sum';
    echo $fun_var();
    
    • 字符串截取函数

      //使用字符串截取函数
      $file = 'hack.jpg';
      $action = strtolower(trim(strrchr($file,'.'),'.'));
      echo $action;
      
  • 递归函数

    • 递归函数就一直执行某一个工作,直至退出点的出现。
    • 递归和循环类似。
      • 递归是不断的调用自身,如果不加以控制就会直至栈溢出,递归经常调用函数,开销大(内存、时间)。
      • 循环是不断的执行某一段代码,直至死循环。
function recursive($num) {
    if ($num == 1) {
        return $num;
    }
    return $num * recursive($num-1);   
}
echo recursive(2);