zoukankan      html  css  js  c++  java
  • PHP手册 – 变量和常量

    变量

    php中变量的定义,就是就在某一个单词前面加上“(”。这是php的特色,**我想到的一个好处就是和常量做区分。另外,linux的shell编程中,)有取值的意思。**。赋值方式也能体现php作为弱类型语言的特色。 传值赋值 + 引用赋值,而引用赋值,如$p = &$var,加个地址符就可以了。

    变量命名规则的正则表达式:[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]

    (1) PHP的变量名区分大小写;(2) 变量名必须以美元符号$开始;(3) 变量名开头可以以下划线开始;(4) 变量名不能以数字字符开头. 至于兼容十六进制字符集,恩web编程中能用到吗。


    变量范围

    下面代码中的$a在tmp.php中有效。

    $a = 1;
    include 'tmp.php';
    

    至于include作用域的问题请参考:链接.

    但在用户自定义函数中,局部函数范围被引进,任何用于函数内部的变量按缺省情况控制在局部函数范围内。如下面的脚本不会有输出,这点与C语言不同。

    $a = 1; /* global scope */
    function Test()
    {
    	echo $a; /* reference to local scope variable */
    }
    Test();
    

    说明了function,并不像c语言中只是一个代码块,而是类似于子对象的概念

    在PHP中全局变量在函数中使用必须声明为global,如上面的代码应写成:

    $a = 1; 
    function Test()
    {
    	global $a;
    	echo $a; 
    }
    Test();
    

    也可以使用(GLOBAL数组,)GLOBAL是超全局变量,即在一个脚本中的全部作用域中都可用,而无需执行 global $variable

    $a = 1; 
    function Test()
    {
    	echo $GLOBAL['a']; 
    }
    Test();
    

    静态变量

    变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

    /* 多次执行 test(), $a 可以累加 */
    function test()
    {
    	static $a = 0;
    	echo $a;
    	$a++;
    }
    

    静态变量复制时不能使用表达式。如 static $int = 1+2; 是错误的。


    可变变量

    可变变量即一个变量的变量名可以动态设置和使用,通过多个美元符号实现。不过不适用于静态变量。

    $a = 'hello';
    $$a = 'world'; // 等价于 $hello = 'world'
    // 下面两个都是输出 hello world
    echo "$a ${$a}";
    echo "$a $hello";
    // 美元符号是两个以上
    $world = 'end';
    echo $$$a;  // 输出 end 
    // 不适用于静态变量
    $var = "ciao";
    static $$var = 0; // parse error
    

    这种功能和java中的类名,对象引用有点像。 如果是做底层编程,也许能用到。这是动态语言的特性。

    也可使用花括号来给属性名清晰定界,可用于动态解析。

    $a = 'a';
    $b = 'b';
    $ab = 'a+b';
    // 因为 ${'ab'} 是合法的,所以会输出 'a+b'
    echo ${$a . $b};
    // 结合函数也是可以的
    function func() {
        return 'b';
    }
    echo ${$a. func()}; // 输出 'a+b'
    // 还可以这样
    $my_func = 'func';
    echo $my_func();    // 输出 'b'
    

    常量

    常量是一个简单值的标识符(名字),在执行期间不改变。常量默认为大小写,通常以大写的标识符来表示。

    • 常量是通过 define() 来声明,输出时使用其标识符(不用$)就行。
    • 类中的常量要使用 const 来声明。
    • 和超全局变量一样,常量的范围是全局的。
    • 常量一旦定义就不能被重新定义或者取消定义
    • 用 get_defined_constants() 可以获得所有已定义的常量列表。
    • 常量在 heredoc 中无法解析。

    常量的定义和使用

    define('MAX_VALUE', 1);
    echo MAX_VALUE;                 // 输出 1
    echo constant('MAX_VALUE');     // 也可通过函数获取
    class Constants
    {
        const MIN_VALUE = 0;      // 用define声明会出错
        public static function getMaxValue() {
            return MAX_VALUE;
        }
        public static function getMinValue() {
            return self::MIN_VALUE;
        }
    }
    echo Constants::getMaxValue();      // MAX_VALUE 是全局变量
    echo Constants::getMinValue();      // 输出 0
    echo Constants::MIN_VALUE;          // 也可以这样访问
    echo MIN_VALUE;     // 不能输出 0,类中定义的常量,不是全局变量
    

    魔术常量

    PHP 向它运行的任何脚本提供了大量的预定义常量,有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写。

    八个魔术常量 __LINE__, __FILE__ , __DIR__ , __FUNCTION__ , __CLASS__ , __TRAIT__ , __METHOD__ , __NAMESPACE__

    __FILE__: 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含文件的路径和文件名。
    __DIR__: 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。目录中名不包括末尾的斜杠。

    参考: http://www.powerxing.com/php-review-variable-and-constant/
    http://cn2.php.net/manual/zh/language.constants.predefined.php

  • 相关阅读:
    android 自己定义ViewGroup实现可记载并呈现选择的ListView
    【iOS】网络载入图片缓存与SDWebImage
    Android eclipse导入项目后出现Unable to resolve target 'android-17'解决方法
    leetcode 258: Add Digits
    Mahout算法调用展示平台2.1
    rgocaupbnxj
    代码问题配置
    Tomcat_startup
    Tomcat_shutdown
    Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份
  • 原文地址:https://www.cnblogs.com/haore147/p/4908322.html
Copyright © 2011-2022 走看看