PHP基础3-变量和常量

1.变量

PHP中,变量支持的数据类型有:int整数,float(等同于double,双精度)实数,string字符串,bool布尔值,array数组,object对象。此外有2个特殊类型:NULL(空,未赋值、已重置或赋值为NULL的变量就是NULL类型)和resource(资源,保存了到外部资源的一个引用,特定的内置函数如数据库函数,返回resource类型的变量)。
PHP变量名对大小写敏感。

1.变量类型获取、判断及转换

1.类型获取

string gettype($var):官方不建议使用,速度慢,可能以后会变。

2.类型判断

bool is_integer($var)— is_int() 的别名:检测变量是否是整数,是则返回true。
bool is_numeric($var):检测变量是否为数字或数字字符串。
bool is_float($var):检测变量是否是浮点型。
bool is_string($var):检测变量是否是字符串。
bool is_bool($var):检测变量是否是布尔型。
bool is_scalar ( mixed $var ):检测变量是否是一个标量,标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。
bool is_array(\$var):检测变量是否是数组。
bool is_object(\$var):检测变量是否是对象。
bool is_null(\$var):检测变量是否是NULL。
bool is_resource(\$var):检测变量是否是资源类型。

3.类型转换
  • 直接在变量前用(int),(float)…转换。
  • 用settype()转换类型
    bool settype ( mixed &$var , string $type )
  • 也可以用每个类型都有的转换方法。
    int intval ( mixed $var [, int $base = 10 ] )通过使用指定的进制 base 转换(默认是十进制)获取变量的整数值。最大的值取决于操作系统。
    float floatval ( mixed $var )返回变量 var 的 float 数值。
    string strval ( mixed $var )获取变量的字符串值。

2.变量作用域(global作用域和local作用域)

内置超级全局变量在脚本的任何地方都可见。
static(静态):函数内创建并被声明为静态的变量无法在函数外部可见。
global(全局):在一个脚本中声明的全局变量(函数外),整个脚本可见,但函数内不可见。
local(局部):在函数内声明,仅在函数内可见。函数终止时变量回收。
函数内声明的变量为全局变量时,变量名需要与全局变量一样。

3.global关键字

需要在函数内访问全局变量时,需要global关键字。

<?php

$g = 5;
f();

function f() {
    global $g; //引入全局变量$g
    echo $g;
}

PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。

<?php

$g = 5;
f();

function f() {
    echo $GLOBALS['g'];
}

4.static关键字

静态全局变量,无意义。

通常,当函数完成/执行后,会删除函数内的所有局部变量。首次声明变量时使用 static 关键词,则不会删除该局部变量。可以在函数的多次执行过程中保持该值(普通变量每次都会初始化)。每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。

<?php

$g = 5;
f();
f();
f();

function f() {
    static $x = 5;
    echo $x; //依次打印567。如果是普通变量,则打印555。
    $x ++;
}

5.可变变量

变量名不能在编程时确定时,需要可变变量。
$name = ‘varname’;
$$name = 5; //等价于$varname = 5;

6.变量赋值

1.传值赋值

当一个变量的值赋予另外一个变量时,开辟新的存储空间存放变量。改变其中一个变量的值,将不会影响到另外一个变量。
变量默认总是传值赋值。

2.引用赋值

新变量引用了原始变量。改动新的变量将影响到原始变量,反之亦然。
用法:将一个 & 符号加到将要赋值的变量前(源变量),比如$a = &$b;
注意:只有有名字的变量才可以引用赋值。比如$a = &(7 + 2)

2.常量

常量的范围是全局的。不用管作用区域就可以在脚本的任何地方访问常量。

1.自定义常量

define(“FOO”, “something”); //只能在类外面用

2.类常量

常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
const VALUE = 0.0; //类内或类外都可以用

<?php
class MyClass
{
    const constant = 'constant value';

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>

3.魔术常量

名称意思
__LINE__文件中的当前行号。
__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 CLASS 对 trait 也起作用。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。
__TRAIT__Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
__METHOD__类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值