PHP数据类型相关

PHP支持8种原始数据类型 : 4种标量类型(int,float,string,boolean),2种复合类型(array,object),2种特殊类型(resource,NULL)

Boolean(布尔)类型

以下值被认为是false

  1. 布尔值 false
  2. 整型值 0
  3. 浮点型 0.0
  4. 空字符串''或者字符串'0'
  5. 空数组
  6. 空对象
  7. NULL未赋值的变量
  8. 空标记生成的simpleXML对象
<?php
var_dump((bool)"");         // bool(false)
var_dump((bool)1);          // bool(true)
var_dump((bool)-2);         // bool(true)
var_dump((bool)"foo");      // bool(true)
var_dump((bool)2.3e5);      // bool(true)
var_dump((bool)array(12));  // bool(true)
var_dump((bool)array());    // bool(false)
var_dump((bool)"false");    // bool(true)
?>

echo false; 会输出空值

Integer(整型)

整型可以使用十进制,十六进制,八进制或二进制表示,前面可以加可选符号(±)

  • 使用八进制数字前必须加0

  • 使用十六进制数字前必须加0x

  • 使用二进制数字前必须加0b

<?php
$a  =  1234 ;  // 十进制数
$a  = - 123 ;  // 负数
$a  =  0123 ;  // 八进制数 (等于十进制 83)
$a  =  0x1A ;  // 十六进制数 (等于十进制 26)
$a  =  0b10 ;  // 二进制进制数 (等于二进制 2)

PHP_INT_MAX 表示 int类型最大值

整数溢出 : 如果数值定义或计算超过int范围(PHP_INT_MAX),将会转为 float
浮点类型转换 : 当从浮点型转换为整型时,将 向下取整

Warning : 不要将未知的数值转换为int
<?php
echo (int) ( ( 0.1 + 0.7 ) *  10  );  // 显示 7!
Float(浮点型)
Warning : 永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
<?php
$a  =  1.23456789 ;
$b  =  1.23456780 ;
$epsilon  =  0.00001 ;
//要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。
if( abs ( $a - $b ) <  $epsilon ) {
    echo  "true" ;
}

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

String(字符串)类型

warning : 用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。非法下标类型会产生一个 E_NOTICE  级别错误。用负数下标写入字符串时会产生一个 E_NOTICE  级别错误,用负数下标读取字符串时返回空字符串。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是 NULL 字符。
<?php
$str = '0123';
$str[101] = 7;
echo $str; //0123 7
一个布尔值 boolean  的 TRUE  被转换成 string  的 "1"。 Boolean  的 FALSE  被转换成 ""(空字符串)。

Array(数组)类型

key : int 或者 string
value : 可以是任意类型

key的强制转换
 1. 合法整型值字符串会被转为整型, '8'=>8,但是'08'不会,因为其不是一个合法十进制数值
 2. 浮点数会舍去取整
 3. 布尔值,true=>1,false=>0
 4. NULL会被转为空字符串
 5. 数组和对象不能作为键名
<?php
$arr = [
    1 => 'a',
    '1'=>'b',
    1.9 => 'c',
    true => 'd',
];
print_r($arr);  //Array ( [1] => d )
<?php
$arr = [
    0123 => 'a', //八进制数 (等于十进制 83)
    123 => 'b',
];
print_r($arr);  //Array ( [83] => a [123] => b )
<?php
$arr = [
    NULL=>'a',
    1=>'b',
];
print_r($arr);  //Array ( [] => a [1] => b )
$arr = [
    NULL=>'a',
    1=>'b',
    ''=>'c',
];
print_r($arr);  //Array ( [] => c [1] => b )

unset : 允许删除数组中指定键,但是不会重建索引,重建索引可使用 array_values()

Object(对象)类型

get_object_vars : 返回由对象属性组成的关联数组

<?php
class A{
    public $a=1;
    public $b=2;
    public $c=3;
}
$a = new A;
print_r(get_object_vars($a));
//Array
//(
//    [a] => 1
//    [b] => 2
//    [c] => 3
//)

NULL(空)类型

 1. 被赋值 NULL
 2. 未被复制
 3. 被unset
<?php
$a = NULL;
var_dump($a);
$b;
var_dump($b);
$c = 666;
unset($c);
var_dump($c);

// NULL 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值