• boolval — 获取变量的布尔值

    标量类型会被转化成布尔类型。一般是空、null、空数组、0、0.0等会返回false的布尔值。

  • debug_zval_dump — Dumps a string representation of an internal zend value to output

  • doubleval — floatval 的别名

  • empty — 检查一个变量是否为空

    判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

    当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.

    以下的东西被认为是空的:

    • "” (空字符串)
    • 0 (作为整数的0)
    • 0.0 (作为浮点数的0)
    • “0” (作为字符串的0)
    • NULL
    • FALSE
    • array() (一个空数组)
    • $var; (一个声明了,但是没有值的变量)

    所以: empty() 本质上与 !isset($var) || $var == false 等价。

  • floatval — 获取变量的浮点值

    var 可以是任何标量类型。你不能将 floatval() 用于数组或对象。

  • get_defined_vars — 返回由所有已定义变量所组成的数组

    此函数返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。

    $b = array(1,1,2,3,5,8);
    
    $arr = get_defined_vars();
    
    // 打印 $b
    print_r($arr["b"]);
    
    // 打印 PHP 解释程序的路径(如果 PHP 作为 CGI 使用的话)
    // 例如:/usr/local/bin/php
    echo $arr["_"];
    
    // 打印命令行参数(如果有的话)
    print_r($arr["argv"]);
    
    // 打印所有服务器变量
    print_r($arr["_SERVER"]);
    
  • get_resource_type — 返回资源(resource)类型

    此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。

    $c = mysql_connect();
    echo get_resource_type($c)."\n";
    // 打印:mysql link
    
    $fp = fopen("foo","w");
    echo get_resource_type($fp)."\n";
    // 打印:file
    
  • gettype — 获取变量的类型

    不要使用 gettype() 来测试某种类型,因为其返回的字符串在未来的版本中可能需要改变。此外,由于包含了字符串的比较,它的运行也是较慢的。

    建议使用is_函数:is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()。

  • intval — 获取变量的整数值

    intval( mixed $var[, int $base = 10] ) : int
    

    通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

    注意:除非 var 是一个字符串,否则 base 不会起作用。

    echo intval(42, 8);                   // 42
    echo intval('42', 8);                 // 34
    
  • is_array — 检测变量是否是数组

  • is_bool — 检测变量是否是布尔型

  • is_callable — 检测参数是否为合法的可调用结构

  • is_countable — Verify that the contents of a variable is a countable value

  • is_double — is_float 的别名

  • is_float — 检测变量是否是浮点型

  • is_int — 检测变量是否是整数

    若想测试一个变量是否是数字或数字字符串(如表单输入,它们通常为字符串),必须使用 is_numeric()。

  • is_integer — is_int 的别名

  • is_iterable — Verify that the contents of a variable is an iterable value

  • is_long — is_int 的别名

  • is_null — 检测变量是否为 NULL

  • is_numeric — 检测变量是否为数字或数字字符串

  • is_object — 检测变量是否是一个对象

  • is_real — is_float 的别名

  • is_resource — 检测变量是否为资源类型

  • is_scalar — 检测变量是否是一个标量

    如果给出的变量参数 var 是一个标量,is_scalar() 返回 TRUE,否则返回 FALSE。

    标量变量是指那些包含了 integer、float、string 或 boolean的变量,而 array、object 和 resource 则不是标量。

  • is_string — 检测变量是否是字符串

  • isset — 检测变量是否已设置并且非 NULL

    isset说简单又不简单,很多注意细节:

    • 检测变量是否设置,并且不是 NULL
    • 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。
    • 若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
    • 同时要注意的是 null 字符("\0”)并不等同于 PHP 的 NULL 常量。
    • 如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。
  • print_r — 以易于理解的格式打印变量。

    print_r( mixed $expression[, bool $return = FALSE] ) : mixed
    

    很多phper并不知道print_r可以返回值,想要获取 print_r() 输出的内容,使用 return 参数。当此参数为 TRUE,print_r() 会直接返回信息,而不是输出。

  • serialize — 产生一个可存储的值的表示

    serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

    但适合在php环境内传递序列串。

  • settype — 设置变量的类型

  • strval — 获取变量的字符串值

    var 可以是任何标量类型。不能将 strval() 用于数组或对象。

  • unserialize — 从已存储的表示中创建 PHP 的值

    如果传递的字符串不可解序列化,则返回 FALSE

  • unset — 释放给定的变量

    unset( mixed $var[, mixed $...] ) : void
    

    unset() 销毁指定的变量。

    unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

    • 如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

      function destroy_foo() {
          global $foo;
          unset($foo);
      }
      
      $foo = 'bar';
      destroy_foo();
      echo $foo;//bar
      
    • 如果您想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现

      unset($GLOBALS['bar']);
      
    • 如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

      function foo(&$bar) {
          unset($bar);
          $bar = "blah";
      }
      
      $bar = 'something';
      echo "$bar\n";//something
      
      foo($bar);
      echo "$bar\n";//something
      
    • 如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。

      function foo()
      {
          static $bar;
          $bar++;
          echo "Before unset: $bar, ";
          unset($bar);
          $bar = 23;
          echo "after unset: $bar\n";
      }
      
      foo();//Before unset: 1, after unset: 23
      foo();//Before unset: 2, after unset: 23
      foo();//Before unset: 3, after unset: 23
      

    所以对于在局部中想unset一个全局(global引入)或外部变量(引用传递),并不会影响全局变量或外部变量。

    // 销毁单个变量
    unset ($foo);
    
    // 销毁单个数组元素
    unset ($bar['quux']);
    
    // 销毁一个以上的变量
    unset($foo1, $foo2, $foo3);
    
  • var_dump — 打印变量的相关信息

    支持打印多个变量表达式。

  • var_export — 输出或返回一个变量的字符串表示

    var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 函数类似,不同的是其返回的表示是合法的 PHP 代码。

    常用于返回一个数组php代码,用于保存数组配置。

    注意:var_export与print_r一样都有第二个参数,设置为true时,将不直接输出,而是返回值。