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--; // 结束时让其值跟初始化一样,防止再次调用时还保留之前调用过的结果
    }

  • 相关阅读:
    Java基本数据类型转换
    Java中的数据类型
    Java常见关键字
    HashMap源码分析(jdk 8)
    函数参数
    存储盘在系统中对应的naa号
    Python处理文本换行符
    Python文件操作中的方法:.write()换行
    此示例示意标准输出函数print的用法
    主机端查看到的wwpn 不是以:分割解决办法
  • 原文地址:https://www.cnblogs.com/lin3615/p/3806089.html
Copyright © 2011-2022 走看看