• 技术文章 >后端开发 >php教程

    php 常量定义的问题

    2016-09-27 14:18:11原创596
    class testClass {
        const FRUIT = ['apple','orage'];
    }

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

    回复内容:

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

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

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

    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;

    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);

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

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

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

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

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

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

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:think求php支付宝当面付domo 下一篇:线程池 - 想用php发邮件然后记录发送结果,目前用的redis,用一个脚本执行发送和记录操作,很慢,有什么更好的方法吗
    大前端线上培训班

    相关文章推荐

    • 你必须了解PHP中什么是抽象类和抽象方法• 怎样使用PHP中的spl_autoload_register() 和 __autoload() 函数?• PHP中怎样去判断对象是否属于一个类?• PHP中怎样完成Cookie的创建、读取和删除?• 五分钟带你看PHP中的接口interface声明与应用(实例详解)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网