【问题标题】:Is there a way to define a constant array in PHP? [duplicate]有没有办法在 PHP 中定义一个常量数组? [复制]
【发布时间】:2011-01-15 13:00:10
【问题描述】:

有没有办法在 PHP 中定义一个常量数组?

【问题讨论】:

  • 它可以用来模拟枚举,尽管一切都可以通过类和一点反射来完成。

标签: php


【解决方案1】:

不认为你可以。但是您可以随时尝试searching

【讨论】:

  • 投反对票是不合理的,链接指向一个非常好的资源。
  • 您可以查看您的答案吗? “不认为你可以”和参考文献中的“这个类提供了一种替代解决方案,可用于将数组值声明为常量”之间似乎存在矛盾。
【解决方案2】:
define('SOMEARRAY', serialize(array(1,2,3)));

$is_in_array = in_array($x, unserialize(SOMEARRAY));

这是最接近数组常量的。

【讨论】:

  • Thanx:这样做并且效果很好 define("DEF_ARR", serialize(array("1", "a", "From.ME.to.YOU"))); foreach (unserialize(DEF_ARR) as $k=>$v) { echo "Key: ".$k." VALUE: ".$v."\n"; }
【解决方案3】:

你不能,但你可以在一个类中定义静态数组,它会为你提供同样的服务,只是你会写 Foo::$bar 来代替 FOO。

【讨论】:

    【解决方案4】:

    不,这是不可能的。来自手册:Constants Syntax

    只有标量数据(布尔值、整数、浮点数和字符串)可以包含在常量中。可以将常量定义为资源,但应避免使用,因为它可能导致意外结果。

    如果您需要设置一组已定义的常量,请考虑创建一个类并用class constants 填充它。手册中稍作修改的示例:

    class MyClass
    {
    const constant1 = 'constant value';
    const constant2 = 'constant value';
    const constant3 = 'constant value';
    
      function showConstant1() {
        echo  self::constant1 . "\n";
      }
    }
    
    echo MyClass::constant3;
    

    还可以查看 GhostDog 发布的链接,这是一个很好的解决方法。

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多