【问题标题】:How to get values of static variables from a function in php?如何从php中的函数获取静态变量的值?
【发布时间】:2021-04-19 23:16:21
【问题描述】:

我需要从函数中获取静态变量的值,例如:

a,b,c,d,e,f,g 是函数 test() 中的静态变量

test().a 或 test("a"),应该返回静态变量 a 的值

test().b 或 test("b"),应该返回静态变量 b 的值

等等!

【问题讨论】:

  • 我认为没有任何方法可以做到这一点。如果你需要这个,你不应该首先使用静态变量。
  • @Barmer 有办法做到这一点,但我不明白为什么要这样做。

标签: php static


【解决方案1】:

我想不出你为什么需要这个,但你去吧:

<?php

function fnc($var){
  static $a = 1;
  static $b = 2;
  return $$var;
}
echo fnc("a").",".fnc("b")."\n";  // 1,2

对于$$var,请参阅Variable Variables

https://3v4l.org/2CqSu的演示

【讨论】:

  • 它有效,谢谢。 (任何php版本都支持双美元吗?)
  • @user 至少可以追溯到 v4.3,但无论如何你都应该使用 v8 来编写新代码。见3v4l.org/2CqSu
  • 今天学到东西了,再次感谢!
【解决方案2】:

Dot (.) 是一个字符串连接,我不知道如何在 PHP 中覆盖它。您可以改用-&gt;

function weird($var = null)
{
    static $a = 'a', $b = 'b', $c = 'c', $d = 'd', $e = 'e';
    
    if (func_num_args())
    {
        return $$var;
    }
    
    return (object) get_defined_vars();
}

$result = weird('a') . weird()->b . weird('c');

【讨论】:

  • 感谢您的回答,我将使用双美元解决方案来满足我的需要。
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多