Difference between var_dump,var_export & print_r

前端 未结 2 1953
再見小時候
再見小時候 2020-11-29 16:04

What is the difference between var_dump, var_export and print_r ?

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-29 16:37

    var_dump is for debugging purposes. var_dump always prints the result.

    // var_dump(array('', false, 42, array('42')));
    array(4) {
      [0]=> string(0) ""
      [1]=> bool(false)
      [2]=> int(42)
      [3]=> array(1) {[0]=>string(2) "42")}
    }
    

    print_r is for debugging purposes, too, but does not include the member's type. It's a good idea to use if you know the types of elements in your array, but can be misleading otherwise. print_r by default prints the result, but allows returning as string instead by using the optional $return parameter.

    Array (
        [0] =>
        [1] =>
        [2] => 42
        [3] => Array ([0] => 42)
    )
    

    var_export prints valid php code. Useful if you calculated some values and want the results as a constant in another script. Note that var_export can not handle reference cycles/recursive arrays, whereas var_dump and print_r check for these. var_export by default prints the result, but allows returning as string instead by using the optional $return parameter.

    array (
      0 => '',
      1 => false,
      2 => 42,
      3 => array (0 => '42',),
    )
    

    Personally, I think var_export is the best compromise of concise and precise.

提交回复
热议问题