search

Home  >  Q&A  >  body text

php 常量定义的问题

class testClass {
    const FRUIT = ['apple','orage'];
}

这里边的 常量FRUIT 可以定义成 ['apple','orage']这样的吗(这个是数组吧), FRUIT 不应该 是一个 数字或字符串 吗?求解答!!

PHP中文网PHP中文网2825 days ago660

reply all(5)I'll reply

  • ringa_lee

    ringa_lee2017-04-11 10:33:20

    PHP7开始可以用define定义常量数组:
    define('APP1', array(1,2,3)); var_export(APP1);
    老版本PHP则可以先把数组序列化成字符串后定义常量,用的时候反序列化即可:
    define('APP2', serialize(array(1,2,3))); var_export(unserialize(APP2));
    PHP从5.6开始也可以用const定义常量数组:
    const APP3 = array(1,2,3); var_export(APP3);

    reply
    0
  • PHPz

    PHPz2017-04-11 10:33:20

    常量只是不能被改变的量,不一定非要数字或者字符串嘛

    reply
    0
  • 阿神

    阿神2017-04-11 10:33:20

    PHP7可通过defind()定义数组常量PHP70new-featres

    eg:

        define('ANIMALS', [
            'dog',
            'cat',
            'bird'
        ]);
    
    echo ANIMALS[1]; // outputs "cat"`
    

    PHP7也可以去掉defind(),直接使用 const定义常量数组

    另外PHP7也支持常量之间的运算,eg: const A = 1; const B =3; const C = A + B;

    reply
    0
  • 高洛峰

    高洛峰2017-04-11 10:33:20

    const是指变量定义后不能改变,数组定义成const后,就不能再增减里面的元素了。
    5.6.0之前,php没有这样的特性,这时候可以用

    /** @const */
    private static $myArray = array(...);
    

    代替。
    5.6.0开始加入这一特性,所以这个代码要想跑对机器的php版本有一定要求。

    reply
    0
  • 迷茫

    迷茫2017-04-11 10:33:20

    好像是 5.6 左右开始就可以在类中这样定义了

    class SomeClass {
        const FRUIT = ['apple','orage'];
    }
    
    // 取
    echo SomeClass::FRUIT[0]; // apple

    不过一些IDE还不能很好的支持

    reply
    0
  • Cancelreply