zoukankan      html  css  js  c++  java
  • php中var_dump、var_export和print_r的用法区别

    void var_dump ( mixed $expression [, mixed $... ] )
    此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。在PHP5里,所有的public、private和protected属性都会被返回输出。

    -------------------------------------------------------------
    mixed var_export ( mixed $expression [, bool $return ] )
    输出或返回一个变量的字符串表示。此函数返回关于传递给改函数的变量的结构信息,它和var_dump()类似,不同的是其返回的表示是合法的PHP代码。
    当第二个参数设置位TRUE,可以将返回的变量表示复制给一个变量。
    var_export在处理一些递归的结构时会报错,但var_dump不会,因为它可以避免递归的引用。比如:var_export($GLOBALS);会报错,var_dump($GLOBALS);则可以运行。

    -------------------------------------------------------------
    bool print_r ( mixed $expression [, bool $return ] )
    显示关于变量的易于理解的信息。如果给出的事string、integer或float,将打印变量值本身。如果给出的事array,将会按照一定的格式显示键和元素。object与数组类似。记住,print_r()将把数组的指针移到最后边,使用reset()可让指针回到开始处。第二个参数设置为TRUE则可以返回为字符串,可以赋值给变量。


    下面对比下三者对数组的输出

    $array = array(1, 2, array('a', 'b', 'c'));
    var_export($array);
    /* 输出:
    array (
      0 => 1,
      1 => 2,
      2 => 
      array (
        0 => 'a',
        1 => 'b',
        2 => 'c',
      ),
    )
    */
    
    print_r($array);
    /* 输出:
    Array
    (
        [0] => 1
        [1] => 2
        [2] => Array
            (
                [0] => a
                [1] => b
                [2] => c
            )
    
    )
    */
    
    var_dump($array);
    /* 输出:
    array (size=3)
      0 => int 1
      1 => int 2
      2 => 
        array (size=3)
          0 => string 'a' (length=1)
          1 => string 'b' (length=1)
          2 => string 'c' (length=1)
    */

    下面对比下三者对变量的输出

    $var = 'string';
    var_dump($var);
    /* 输出:
    string 'string' (length=6)
    */
    
    var_export($var);
    /* 输出:
    'string'
    */
    
    print_r($var);
    /* 输出:
    string
    */

    -------------------------------------------------------------
    下面对比下三者对资源的输出

    $handle = fopen('log.txt', 'r');
    var_dump($handle);
    /* 输出:
    resource(3, stream)
    */
    
    var_export($handle);
    /* 输出:
    NULL
    */
    
    print_r($handle);
    /* 输出:
    Resource id #3
    */

    -------------------------------------------------------------
    下面对比下三者对布尔变量的输出

    $a = TRUE;
    var_dump($a);
    /* 输出:
    boolean true
    */
    
    var_export($a);
    /* 输出:
    true
    */
    
    print_r($a);
    /* 输出:
    1
    */

    -------------------------------------------------------------
    下面对比下三者对对象的输出
     

    $obj = new obj();
    var_dump($obj);
    /* 输出:
    object(b)[1]
      private 'data' => null
    */
    
    var_export($obj);
    /* 输出:
    obj::__set_state(array( 'data' => NULL, ))
    */
    
    print_r($obj);
    /* 输出:
    obj Object ( [data:obj:private] => )
    */
  • 相关阅读:
    java volatile关键字解惑
    Java 反射
    拷贝源实体类到目标实体类中
    Bean和Map之间的转换
    DateUtils时间的封装
    HttpClient的代码封装,便于直接调用
    HttpClient语法
    LinkedHashMap+ConcurrentHashMap+hashMap的区别
    1006 Tick and Tick
    Event Flow
  • 原文地址:https://www.cnblogs.com/wayne173/p/5133540.html
Copyright © 2011-2022 走看看