【问题标题】:a beahviour of a simple function that i cannot wrap my head around?一个我无法理解的简单函数的行为?
【发布时间】:2021-05-31 12:23:28
【问题描述】:

这是一本书中介绍static变量的示例函数。

  1 <?php                                                                                                          
  2     function test()                                                                                            
  3     {                                                                                                          
  4         static $count = 0;                                                                                     
  5         echo $count;                                                                                           
  6         $count++;                                                                                              
  7     }                                                                                                                                                                                                                   
  8 ?>  

现在如果我打电话给test 2 次,像这样:

  1 <?php                                                                                                          
  2     function test()                                                                                            
  3     {                                                                                                          
  4         static $count = 0;                                                                                     
  5         echo $count;                                                                                           
  6         $count++;                                                                                              
  7     }                                                                                                          
  8                                                                                                                
  9     test();                                                                                                    
 10     test();                                                                                                    
 11                                                                                                                
 12 ?>      

我希望输出是这样的:

0
1

相反,输出是:

└─$ php static.php
01    

这是为什么?

【问题讨论】:

  • 你没有打印换行符,所以01 是相邻打印的,再调用一次你的函数,你会看到012
  • @AymDev 是有道理的。所以将echo $count; 更改为echo $count . "\n""&lt;br&gt;" 就可以了
  • 打印 &lt;br&gt; 如果您在 Web 浏览器上进行测试,但我认为您正在从 CLI SAPI(命令行)执行代码,您可以使用 PHP_EOL 打印新行常量,它将处理操作系统的差异。

标签: php function static


【解决方案1】:

没有添加换行符: echo $count; 到 -> echo $count . "\n"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多