zoukankan      html  css  js  c++  java
  • php static 关键字在 函数中的用法

    至于在类中声明为 static 的属性和方法,这里不描述
    php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。

    function test()
    {
        $tVar = 10;
        echo $tVar;
        $tVar++;
    }

    以上函数每次调用时都会将 $tVar 的值设为 10 并输出 "10"。将变量加一的 $tVar++ 没有其到效果,因为一旦退出本函数则变量 $tVar 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $tVar 定义为静态(static)的:

    function test()
    {
        static $tVar = 10;
        echo $tVar;
        $tVar++;
    }

    以上函数每调用Test()都会输出 $tVar 的值并加1。

    又如:

    function aa()
    {
        static $bb = array();
        array_push($bb, 'a');
        print_r($bb);
    }

    aa();
    Array
    (
        [0] => a
    )

    aa();
    Array
    (
        [0] => a
        [1] => a
    )

    aa();
    Array
    (
        [0] => a
        [1] => a
        [2] => a
    )

    如果在声明中用表达式的结果对其赋值会导致解析错误。如下:

    function test()
    {
        static $tVar = 10+1; // 出错
        echo $tVar;
        $tVar++;
    }


    静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。写递归函数时要小心,因为可能会无穷递归下去,没有出口.务必确保 有方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $aa 来判断何时停止:如下:
    function tt()
    {
        static $aa = 0;
        echo 'this is tt ' . $aa . "<br />";
        $aa++;
        if($aa < 10)
        {
            tt();
        }
        $aa--; // 结束时让其值跟初始化一样,防止再次调用时还保留之前调用过的结果
    }

  • 相关阅读:
    paddlex 使用-7 windows下脚本生成nb文件
    paddlex 使用-6 在Android下预测
    paddlex 使用-5 Andrdroid4.1报错插件无法删除
    paddlex 使用-4 format = EXTENSION[ext].6错误
    paddlex 使用-3 模型加载预测
    paddlex 使用-2 GUI版本
    paddlex 使用-1 安装
    企业微信登录态与显示姓名
    计算工龄(月份)的C#算法
    一个比较好用的Mongodb 工具
  • 原文地址:https://www.cnblogs.com/lin3615/p/3806089.html
Copyright © 2011-2022 走看看