PHP数据类型


title: PHP数据类型
date: 2018-5-18
categories:php

  • PHP学习笔记
    tags:
  • php

PHP 有8种数据类型:html

  • booblean(布尔型)
  • integer(整型)
  • float(浮点型)
  • array(数组)
  • object(对象)
  • resource(资源)
  • NULL(空值)

检测数据类型相关的函数

函数 检测类型 举例
is_bool 检测变量是不是布尔类型 is_bool(true),is_bool(false)
is_string 检测变量是不是字符串类型 is_string('string'),is_string(1234)
is_integer/is_int 检测变量是否为整数 is_integer(34),is_integer('34')
is_float/is_double 检测变量是否为浮点类型 is_float(3.1415),is_float('3.1415')
is_array 检测变量是否为数组类型 is_array($arr)
is_object 检测变量是不是一个对象类型 is_object($obj)
is_null 检测变量是否为null is_null(null)
is_numeric 检测变量是否为数字或数字组成的字符串 is_numeric('5'),is_numeric('bccd110'

常量

在 PHP 中,用 definie() 函数来定义,基本格式:
define( $'变量名',常量表示的值,是否对大写敏感(可选参数,bool值));数组

例如:函数

<?php
    header("Content-type:text/html;charset=utf-8");

    define('MY_NAME', '沫沫');
    define('MY_AGE', '20');
    define('MY_HOBBY', '看小说睡懒觉');

    echo '本府'.MY_NAME.',年芳'.MY_AGE.',尤好'.MY_HOBBY.'。';

    function useConst(){
        echo '<p>函数名字叫:'.`__FUNCTION`__;
    }

    echo '<p>这是第'.__LINE__.'行';
    echo '<p>本文件的绝对路径为:'.__FILE__;
    useConst();
?>

魔术常量

名称 说明
__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 中该值老是小写字母的。类名包括其被声明的做用区域
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的做用区域。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

布尔型

PHP中布尔值 true 和 false 不区分大小写。
如下值被认为是 false:学习

  • 布尔值 false 自己。
  • 整型值 0.
  • 浮点型值 0.0。
  • 空字符串和字符串“0”。
  • 不含任何元素的数组。
  • 不含任何成员变量的对象(仅对php4.0适用)。
  • 特殊类型NULL(包括还没有定义的变量)。
  • 从没有任何标记的 XML 文档生成的 SimpleXML 对象。

字符串型

单、双引号
双引号中所包含的变量会自动被替换长实际数值。
单引号中包含的变量则会按普通字符输出。code

转义字符htm

HereDoc
注意:结尾的标识符前面不能有空格。对象

数组

varry(value1,
        value2,
        ......)

utf-8

varry(key1 => value1,
        key2 => value2,
            ......)
$my_array[key1] = value1;
$my_array[key2] = value2;
......

NULL

不区分大小写。资源

知足如下条件之一时,变量的值为NULL:

  • 变量没有被赋任何值。
  • 变量被指定为NULL。
  • 使用 unset() 函数删除的变量。

强制类型转换

强转类型 功能描述
(boolean) 强转为Boolean类型
(string) 强转为字符串类型
(integer) 强转为整型
(float) 强转为浮点型
(array) 强转为数组
(object) 强转为对象

看下面的代码,能够说你绝对不可能说出正确的答案。

<?php
    echo (int) 123.999999999999999;
    echo (int) -1.999999999999999;
    echo (int) -1.9999999999999999;
    echo (int) -0.99999999999999999;
    echo (int) -10.999999999999999;
    echo (int) -1000.9999999999999;
    echo (int) -9999999999;
?>

下面来看看我获得的结果。

首先要说明下个人系统环境:Windows10 64位

获得的结果以下

124
 -1
 -2
 -1
 -10
 -1000
 -1410065407

官方给出的说法是: 当从浮点数转换成整数时,将向零取整。

若是浮点数超出了整数范围(一般为 +/- 2.15e+9 = 2^31),则结果不肯定,由于没有足够的精度使浮点数给出一个确切的整数结果。在此状况下没有警告,甚至没有任何通知!

那么,咱们来看下面的这个例子。

echo (int) ( (0.1+0.7) * 10 );

不用猜了,这里的执行结果是---7!

对,你没看错,我也没敲错,结果是 7 ,而不是咱们一般认为的 8 。

PHP官方有这么一句警告: 决不要将未知的分数强制转换为 integer,这样有时会致使不可预料的结果。

因此在进行强制类型转换的时候必定要慎重!大数值,高精度,分数都要慎用!

固然,上面的那个例子能够这样来处理。

<?php
    $num = (0.1 + 0.7) * 10;
    echo (int) $num;    //输出7

    (int)$num2 = (0.1 + 0.7) * 10;
    echo $num2;     //输出8
?>

字符串运算符

<?php
    header("Content-type:text/html;charset=utf-8");
    
    $a = '今年是';
    $b = 2018;
    $c = '年。';

    $d = $a.$b.$c;

    echo $d;

    $e = '请叫我';
    $f = '小沫';
    $g = "{$e}{$f}";

    echo $g;
?>
相关文章
相关标签/搜索