PHP重新学习(二)——PHP数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014236259/article/details/78300320
从类型的维度来看,编程语言可以分为三大类:
1、静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的,也就是说在运行时变量的类型是不会发生变化的。
2、动态语言类型,比如:PHP,python等各种脚本语言,这类语言中的类型是在运行时确定的,那么也就是说类型通常可以在运行时发生变化
3、无类型语言,比如:汇编语言,汇编语言操作的是底层存储,他们对类型毫无感知。

PHP支持8种原始数据类型
四种标量类型:boolean(布尔型)、integer(整型)、float(浮点型,和double是等效的)、string(字符串);
两种复合类型:array(数组)、object(对象);
两种特殊类型:resource(资源)、NULL(无类型)
小技巧:如果想查看某个变量和常量的值和类型,用var_dump()函数,如果只想得到一个易读懂的表达方式用于调试,用gettype()函数

Boolean 布尔类型
表达了真值,可以为true或false。两个都不区分大小写
要明确地将一个值转换成boolean,用(bool) 或者(boolean) 来强制转换。要判断一个值是Boolean型可以用is_bool()函数

Integer 整型
整型值可以使用十进制、十六进制、八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
要使用八进制表达,数字前必须加上0(零)。要使用十六进制表达,数字前必须加上0x。要使用二进制表达,数字前必须加上0b。如下所示:
警告:如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略,如:var_dump(01090); // 八进制 010 = 十进制 8
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0b11; // 二进制数 (等于十进制 3)
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
整型数的字长和平台有关,Integer 值的字长可以用常量PHP_INT_SIZE来表示,最大值可以用常量PHP_INT_MAX 来表示
要明确地将一个值转换为integer,用(int)(integer) 强制转换,还可以通过函数intval() 函数来将一个值转换成整型
要判断一个值是Integer型可以用is_int()或is_integer()函数
注意:如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float

Float 浮点型(其实就是双精度数 double)
由于浮点数的精度有限比较两个浮点数是否相等是有问题的。不过还是有迂回的方法来比较浮点数值的。如下:
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if(abs($a-$b) < $epsilon) {
    echo "true";
}
注意:某些数学运算会产生一个由常量NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是FALSE
由于NAN 代表着任何不同值,不应拿NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 函数来检查

String 字符串
一个字符串string 就是由一系列的字符组成,其中每个字符等同于一个字节
一个字符串可以用4种方式表达:单引号、双引号、heredoc语法结构、nowdoc语法结构
单引号:在单引号中要表达单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\\)。除此之外任何的变量和特殊字符的转义序列将不会被替换。
双引号:在双引号中变量和特殊字符的转义序列将会转义替换
Heredoc 结构:表达字符串的方法是用 heredoc 句法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串string 本身,最后要用前面定义的标识符作为结束标志(结束标志必须独占一行且前面没有任何空格)。类似双引号变量和特殊字符的转义序列将会转义替换。
如下所示:
$name = 'test';
$str = <<<EOD
hello world\t
{$name}
EOD;
Nowdoc 结构:一个 nowdoc 结构也用和 heredocs 结构一样的标记<<<, 但是跟在后面的标识符要用单引号括起来,即<<<'EOT'。类似于单引号字符串,不进行解析操作。 示例如下:
$str = <<<'EOD'
hello world
EOD;
字符串也可以通过下标进行读取和修改,示例如下:
$str = 'abc';
echo $str[0];   // 输出 a
$str[2] = d;
echo $str;   //输出 abd
一个值可以通过在其前面加上(string) 或用strval()函数来转变成字符串。
要判断一个值是string型可以用is_string()函数

Array 数组
可以用array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的键(key) => 值(value)对, key 可以是integer 或者string。value 可以是任意类型。简单示例如下:
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
注意:对于任意 integer,float,string,boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。换句话说,(array)$scalarValuearray($scalarValue) 完全一样

Object对象
在PHP中可以通过关键词class定义一个类,然后使用new语句实例化一个类,
就可以创建一个对象。实例如下:

class Demo
{
    function getName()
    {
        echo "类名:Demo"; 
    }
}

$demo = new Demo;
$demo>getName();
一个值可以通过在其前面加上 (object)来强制转变成字符串。
如果将一个对象转换成对象,它将不会有任何变化。
如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。
如果该值为 NULL,则新的实例为空。


Resource资源类型
资源resource是一种特殊变量,保存了到外部资源的一个引用
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义


NULL 
特殊的NULL值表示一个变量没有值。NULL类型唯一可能的值就是NULL。 
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。 
可以通过is_null()函数来判断一个NULL类型
在下列情况下一个变量被认为是 NULL: 
a、被赋值为 NULL。
b、尚未被赋值。
c、被 unset()。 

猜你喜欢

转载自blog.csdn.net/u014236259/article/details/78300320