php常量和变量

变量

变量:由一个美元符号$后面跟变量名来表示。
和其他编程语言一样,一个有效的变量名由字符或者下划线开头,后面跟上任意数量的字符、数字或者下划线(也可中文)。

变量名区分大小写

//$var$Var是不同的变量
$var = "Bob";
$Var = "Tom";
echo $var."和".$Var."\n";

传值赋值和引用赋值

/*
 * 传值赋值:当一个变量的值赋予另外一个变量的时候,改变其中一个变量的值,将不会影响到另外一个变量。
 * 引用赋值:新变量指向了原始变量,改动新的变量将影响到原始变量,反之亦然。(只有由名字的变量才能引用赋值,比如表达式就不可以)
 */
$a = "Bob";
$b = $a;  //传值赋值
$b = 10;
echo "a:".$a."\tb:".$b."\n";

$c = &$a;  //引用赋值
$c = 20;
echo "a:".$a."\tc:".$c."\n";

全局变量

/*
 * 在C语言中全局变量在函数中会自动生效,除非被局部变量覆盖。
 * php中全局变量在函数中使用时必须声明为global
 * $GLOBALS是一个关联数组,每一个变量为一个元素,键名对应对变量,值对应变量内容。
 */
$a = 1;
$b = 2;
function Sum()
{
    echo "a:".$a."\tb:".$b;  //不会有任何输出

    //方法一:使用global标识全局变量
    global $a, $b;
    echo "a + b = ".($a + $b)."\n";

    //方法二:使用$GLOBALS替代
    echo "a + b = ".($GLOBALS['a'] + $GLOBALS['b'])."\n";
}
Sum();

静态变量

/*
 * 静态变量:static variable
 * 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
 */

//每次调用,$a都会重新定义赋初值,$b在编译期间初始化,以后不会重新定义。
function Test1()
{
    $a = 0;
    static $b = 0;

    echo "a=".$a."\t"."b=".$b."\n";
    $a++;
    $b++;
}

for ($i = 0; $i < 10; $i ++)
{
    Test1();
}

可变变量

/*
 * 可变变量:一个变量的变量名可以动态设置和使用。
 */

$a = 'hello';
$$a = "world";  //一个可变变量获取了一个普通变量的值作为这个可变变量的变量名

echo "$a ${$a}"."\n";
echo "$a $hello"."\n";
常量

常量:一旦被定义,就不能再改变或者取消定义。

/*
 * 常量:一旦被定义,就不能再改变或者取消定义。
 * 常量只能包含booleaninteger,float,string
 *
 * 常量和变量有如下不同:
 * 常量前面没有美元符号$;
 * 常量只能用define()函数定义,而不能通过赋值语句;
 * 常量可以不用理会变量的作用域而在任何地方定义和访问;
 * 常量一旦定义就不能被重新定义或者取消定义;
 * 常量的值只能是标量类型;
 *
 * php5.3.0后,除了使用函数define()之外,还可以使用关键字const来定义常量。
 * const和define()的区别:
 * 1. 版本差异,php5.3.0后才能使用const关键字,define()函数对所有版本兼容
 * 2. 定义位置差异:
 *    define()函数定义的常量是在执行define()函数时定义的,可以在任何位置定义,无论是函数内或函数外
 *    const关键字定义的常量是编译时定义的,所以定义的时候必须处于最顶端的作用区域,不能在函数内部
 * 3. 对值的表达式支持差异
 *    const关键字定义的常量值的表达式中不支持运算符,define()函数可以支持
 * 使用const关键字定义常量必须处于最顶端的作用区域。因为用此方法是在编译时定义的,这就意味着不能在函数内,循环体内用const来定义常量。
 */

define("A", "Hello, world");
echo "A = ".A."\n";

const B = "你好";
echo "B = ".B."\n";

魔术常量

 八大魔术常量:
__LINE__:文件中的当前行号
__FILE__:文件的完整路径和文件名
__DIR__:文件所在的目录
__FUNCTION__:函数名称
__CLASS__:类的名称
__TRAIT__:Trait的名字,包括其被声明的作用区域__METHOD__:类的方法名
__NAMESPACE__:当前命名空间的名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值