HTML HTML5 PHP Mysql Linux 缓存技术 工具 资讯 读书 其他
当前位置: 资讯首页 » 全文内容

PHP基础 之 数据类型

发布于: 2017-01-08 03:50:50 )
一、PHP支持8种原始的数据类型。
1 四种标量类型:
  ① boolean 布尔型:这是最简单的类型,可以为 TRUE 或 FALSE。
  ② integer 整型:一个 integer 是集合 ℤ = {..., -2, -1, 0, 1, 2, ...} 中的一个数。 整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
  ③ float 浮点型:浮点型(也叫浮点数 float,双精度数 double 或实数 real)。
  ④ string 字符型:一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。

2 两种符合类型:
  ① array 数组:PHP 中的数组实际上是一个有序映射。
     映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

     定义数组:
     可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。

    array(  key =>  value
     , ...
    )

    // 键(key)可是是一个整数 integer 或字符串 string
    // 值(value)可以是任意类型的值
    最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。

  ② object 对象:要创建一个新的对象 object,使用 new 语句实例化一个类:
 
<?php
    class foo
    {
        function do_foo()
        {
            echo "Doing foo.";
        }
    }

    $bar = new foo;
    $bar->do_foo();
    ?>


3 两种特殊类型:
  ① resource 资源: 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
     a. 转换为资源
     由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
     b. 释放资源
     由于 PHP 4 Zend 引擎引进了引用计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此,很少需要手工释放内存。  
  ② NULL 无类型:特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。
     a. 在下列情况下一个变量被认为是 NULL:
        i:   被赋值为 NULL。
        ii:  尚未被赋值。
        iii: 被 unset()。
     b. NULL 类型只有一个值,就是不区分大小写的常量 NULL。

二、其他类型
1 mixed 混合类型
2 number 数字类型
3 callback 回调类型:一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。
  回调函数示例:
    <?php

    // An example callback function
    function my_callback_function() {
        echo 'hello world!';
    }

    // An example callback method
    class MyClass {
        static function myCallbackMethod() {
            echo 'Hello World!';
        }
    }

    // Type 1: Simple callback
    call_user_func('my_callback_function');

    // Type 2: Static class method call
    call_user_func(array('MyClass', 'myCallbackMethod'));

    // Type 3: Object method call
    $obj = new MyClass();
    call_user_func(array($obj, 'myCallbackMethod'));

    // Type 4: Static class method call (As of PHP 5.2.3)
    call_user_func('MyClass::myCallbackMethod');

    // Type 5: Relative static class method call (As of PHP 5.3.0)
    class A {
        public static function who() {
            echo "A\n";
        }
    }

    class B extends A {
        public static function who() {
            echo "B\n";
        }
    }

    call_user_func(array('B', 'parent::who')); // A
    ?>

三、开发技巧
1 如果想查看表达式的值和类型,可以使用var_dump()函数。
2 如果只是想得到一个易读懂的类型的表达式用于调试,用户gettype()函数。要想查看某个类型,不要用gettype(),而用get_typeh函数,看下面的例子:

<?php
$a_bool = TRUE;   // a boolean
$a_str  = "foo";  // a string
$a_str2 = 'foo';  // a string
$an_int = 12;     // an integer

echo gettype($a_bool); // prints out:  boolean
echo gettype($a_str);  // prints out:  string

// If this is an integer, increment it by four
if (is_int($an_int)) {
    $an_int += 4;
}

// If $bool is a string, print it out
// (does not print out anything)
if (is_string($a_bool)) {
    echo "String: $a_bool";
}
?>

3 如果要将变量强制转换为某类型,可以对其使用强制转换或settype()函数。
  ① 强制类型转换
     PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。

    <?php
    $foo = 10;   // $foo is an integer
    $bar = (boolean) $foo;   // $bar is a boolean
    ?>
     允许的强制转换有:

    (int), (integer) - 转换为整形 integer
    (bool), (boolean) - 转换为布尔类型 boolean
    (float), (double), (real) - 转换为浮点型 float
    (string) - 转换为字符串 string
    (array) - 转换为数组 array
    (object) - 转换为对象 object
    (unset) - 转换为 NULL (PHP 5)

(binary) 转换和 b 前缀转换支持为 PHP 5.2.1 新增。

注意在括号内允许有空格和制表符,所以下面两个例子功能相同:

<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>

To Top