<?php
    //静态变量
    function myfunc(){
    
     static $mystr;
     $mystr = "哈";
    
     echo $mystr."<br>\n";
    
    }
    
    myfunc();
    myfunc();
    myfunc();
    ?>各位能帮我确定下输出么?能告诉我为什么么?谢谢!

解决方案 »

  1.   

    哈 <br>
    哈 <br>
    哈 <br>
     
    static是静态变量,是在编译的时候分配内存空间,一般变量是在运行时分配内存空间。
    不过你这个似乎没什么用
      

  2.   


    哈 
    哈 
    哈 注:<br>隐藏了
      

  3.   

    呵呵  看来是啊 ,但是我不知道 原理,例子说是static有用的,不知道为什么没用了啊 不清楚php运行原理,希望谁能指教啊 
      

  4.   

    你的这个问题,是你理解错了静态变量的用法!你先将我的代码运行试试:
    <?php 
        //静态变量 
    function myfunc(){ 
        static $mystr; 
        $mystr .= "哈"; 
        echo $mystr."<br>";

    myfunc();
    myfunc();
    myfunc();
    ?> 备注说明:静态变量只能运用于局部函数中,一旦定义的局部变量,则这个变量在函数运行结束后,其值不会丢失!以下是你写的代码:
        static $mystr; 
        $mystr = "哈"; 
    你定义了$mystr,但是你每次又将该静态变量重赋值为 "哈",所以不管你调用myfunc()多少次,每次输出的都是一个"哈".而我是这么写的:$mystr .= "哈";我的程序会这样执行:第一次调用 myfunc(),由于 $mystr还没有赋值,所以系统将它初始化为空,然后串接上"哈",第一次调用函数只输出一个"哈",当第二次调用 myfunc()时,由于$mystr的值在第一次函数调用时改变为"哈"了,这次在"哈"的基础上再串接上一个"哈",这是变成2个"哈"了,以此类推。。我这么讲,不知你明白没。。