怎么在php函数中使用静态变量

  介绍

今天就跟大家聊聊有关怎么在php函数中使用静态变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体如下:

& lt; php ?   function 味精(),{   static 才能;a 美元;=,0;   echo 才能;$ + +,& # 39;& lt; br /祝辞;& # 39;;   }      味精();   味精();   味精();

上述代码,分别输出0,1,2静态变量一美元在第一次定义并初始化后就会常驻内存,直到脚本执行完毕。

当第二次调用味精()函数时,这时的一个美元值为1,而不会变成0。

那么问题来了,请看下面的一段代码:

data 美元;=,阵列(   数组才能(& # 39;id # 39;,=祝辞,1,& # 39;标题# 39;,=祝辞,& # 39;衣服& # 39;,,& # 39;父母# 39;,=祝辞,0),   数组才能(& # 39;id # 39;,=祝辞,2,& # 39;标题# 39;,=祝辞,& # 39;鞋子& # 39;,,& # 39;父母# 39;,=祝辞,0),   数组才能(& # 39;id # 39;,=祝辞,3,& # 39;标题# 39;,=祝辞,& # 39;衬衫& # 39;,,& # 39;父母# 39;,=祝辞,1),   数组才能(& # 39;id # 39;,=祝辞,4,& # 39;标题# 39;,=祝辞,& # 39;T恤& # 39;,,& # 39;父母# 39;,=祝辞,1),   数组才能(& # 39;id # 39;,=祝辞,5日,& # 39;标题# 39;,=祝辞,& # 39;运动鞋& # 39;,,& # 39;父母# 39;,=祝辞,2),   数组才能(& # 39;id # 39;,=祝辞,6日,& # 39;标题# 39;,=祝辞,& # 39;休闲鞋& # 39;,,& # 39;父母# 39;,=祝辞,2),   );      $ data2 =,阵列(   数组才能(& # 39;id # 39;,=祝辞,1,& # 39;标题# 39;,=祝辞,& # 39;食物& # 39;,,& # 39;父母# 39;,=祝辞,0),   数组才能(& # 39;id # 39;,=祝辞,2,& # 39;标题# 39;,=祝辞,& # 39;肉食& # 39;,,& # 39;父母# 39;,=祝辞,1),   数组才能(& # 39;id # 39;,=祝辞,3,& # 39;标题# 39;,=祝辞,& # 39;素食& # 39;,,& # 39;父母# 39;,=祝辞,1),   数组才能(& # 39;id # 39;,=祝辞,4,& # 39;标题# 39;,=祝辞,& # 39;牛肉& # 39;,,& # 39;父母# 39;,=祝辞,2),   数组才能(& # 39;id # 39;,=祝辞,5日,& # 39;标题# 39;,=祝辞,& # 39;面条& # 39;,,& # 39;父母# 39;,=祝辞,3),   数组才能(& # 39;id # 39;,=祝辞,6日,& # 39;标题# 39;,=祝辞,& # 39;馒头& # 39;,,& # 39;父母# 39;,=祝辞,3),   );//生成树型数据   function  genTree(项目,美元,美元id =, & # 39; id # 39;,, pid 美元;=,& # 39;父母# 39;,,son 美元;=,& # 39;孩子# 39;),{   时间=美元才能tree 数组();   时间=美元才能tmpMap 数组();      foreach 才能;(items 美元;as 项目美元),{   ,,,tmpMap美元($ item [$ id]],=,美元项目;   ,,}   foreach 才能;(items 美元;as 项目美元),{   ,,,if (收取($ tmpMap [$ item [$ pid]])), {   ,,,,,tmpMap美元($ item [$ pid]][$儿子][],=,,tmpMap美元($ item [$ id]];   ,,,},{else    ,,,,,美元树[],=,,tmpMap美元($ item [$ id]];   ,,,}   ,,}   设置才能($ tmpMap);   return 才能;美元树;   }//通过给定数据,返回选择的字符串,用于选择下拉框   function  getopt(数据,美元,美元idArr =,数组(),,level 美元;=,0,,son 美元;=,& # 39;孩子# 39;),{   static 才能;opt 美元;=,& # 39;& # 39;;   if 才能;(!空(元数据)),{   ,,,foreach  (data 美元;as  k 美元;=祝辞,美元v), {   ,,,,,opt 美元。=,& # 39;& lt; option 价值=https://www.yisu.com/zixun/C涝獀 (“id”)。(in_array (v (“id”), idArr美元)?选择=" true ":”)。“>”。函数(“$ * 3)。美元v(“标题”)。“> ;//第一次调用getopt时,没有任何问题。   回声getopt(元数据);   回声的;      (data2=genTree美元data2);   回声的<选择>;//当第二次调用时,问题就出现了,还留有上次的数据   回声getopt ($ data2);   回声,

上述问题,对于可能多次调用的函数,不建议在内部使用静态变量。

修改getopt函数如下,从函数参数引入一个外部变量的引用,来解决此问题。

function  getopt(数据,美元,美元idArr =,数组(),,,opt 美元;=,& # 39;& # 39;,,level 美元;=,0,,son 美元;=,& # 39;孩子# 39;),{   if 才能;(!空(元数据)),{   ,,,foreach  (data 美元;as  k 美元;=祝辞,美元v), {   ,,,,,opt 美元。=,& # 39;& lt; option 价值=https://www.yisu.com/zixun/C涝獀 (“id”)。(in_array (v (“id”), idArr美元)?选择=" true ":”)。“>”。函数(“$ * 3)。美元v(“标题”)。“>

怎么在php函数中使用静态变量