一般何种情况下定义常量? 新手提问, 常量和变量的值一样,也是存在内存中也是存在栈区吗? 为什么会有常量这种东西呢?反正都是存值,直接用变量代替它不久好了。 常量和变量运用的典型场合有哪些------解决方案-------------------- 看名字就应该知道一些,一个是可以修改的,一个不能修改的------解决方案-------------------- 关键在于 常量是全局的------解决方案--------------------
本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
引用:
版主 变量也可以是全局的呀
是吗?你用用看呀
$a = 123; define('A', 123); function func1() { echo $a; //Notice: Undefined variable: a } function func2() { echo A; //123 } func1(); func2();
Copy after login
------解决方案--------------------
引用:
本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
引用:版主 变量也可以是全局的呀是吗?你用用看呀PHP code?123456789101112$a = 123;define('A', 123); function func1() { echo $a; //Not……
他的意思可能是声明成 global
------解决方案--------------------
凑一下热闹
$GLOBALS['a']='aa'; function abc(){ echo $GLOBALS['a']; } abc();
Copy after login
------解决方案--------------------
繼續打醬油
Define('D','DD'); $b='bbb'; $GLOBALS['a']='aa'; function abc(){ Global $b;//如果不加入这一行,下边的行一定出错,这就是变量的作用范围了. echo $b; echo $GLOBALS['a']; Echo D; $c='ccc'; } abc(); Echo D; Echo $c;//這行一定出錯,因為$c聲明的時候作用範圍是在function內
Copy after login
------解决方案--------------------
常量的结构定义:
typedef struct _zend_constant { zval value;//常量的值 int flags; //CONST_PERSISTENT(跨进程持续存在) ------解决方案-------------------- CONST_CS(大小写敏感) ------解决方案-------------------- CONST_CT_SUBST(允许编译时被替代) char *name;//常量名 uint name_len;//名称长度 int module_number;//常量模块号,由用户定义的常量,此属性会被初始化为PHP_USER_CONSTANT } zend_constant;
Copy after login
变量的结构定义
struct _zval_struct { /* Variable information */ zvalue_value value; //变量值 zend_uint refcount__gc; //引用计数,gc会根据此值来决定是否回收内存 zend_uchar type; //变量类型 zend_uchar is_ref__gc; //是否是一个引用 };
Copy after login