php基础--面试基础题

Created

PHP中几个输出函数echo,print(),print_r(),sprintf(),var_dump()的区别
1:echo:是语句不是函数,没有返回值,可输出多个变量值,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。

2:print:是语句不是函数,有返回值 1 ,只能输出一个变量,不需要圆括号。不能输出数组和对象,只能打印简单类型(如int,string)。

3:print_r:是函数,可以打印复合类型,例如:stirng、int、float、array、object等,输出array时会用结构表示,而且可以通过print_r($str,true)来使print_r不输出而返回print_r处理后的值

4:printf:是函数,把文字格式化以后输出(参看C语言)

5:sprintf:是函数,跟printf相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写入一个变量中,而不是输出来),其他的与printf一样。

6:var_dump():函数,输出变量的内容、类型或字符串的内容、类型、长度。常用来调试,无返回值。可打印多个变量。

7.var_export() :函数。可打印也可不打印。当第二个参数设置为true时不打印,而是返回格式化后的文字。可以像var_dump()一样判断变量的内容、类型、长度。与var_dump()不同的是其返回的表示,是合法的 PHP 代码,可以直接赋值给变量。例如:

1
2
3
4
5
6
<?php

$arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
var_export ( $arr );

?>

程序输出:

array (
  0 => 1,
  1 => 2,
  2 =>array (
    0 => 'apple',
    1 => 'banana',
    2 => 'orange',
  ),
)

注意,上面的输出是合法的PHP代码。假如用var_dump(),则输出为:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(5) "apple"
    [1]=>
    string(6) "banana"
    [2]=>
    string(6) "orange"
  }

}

但是经过var_export()赋值后的变量却已经变为string类型,如果是数组,就不能再用键值对的形式去访问数组元素了。例如:

1
2
3
4
5
6
7
<?php
$arr = array ( 1 , 2 , array ( "apple" , "banana" , "orange" ));
$s = var_export ( $arr,true );
var_dump($s);
echo "<br/>";
echo $s[0];
?>

输出:
string(108) “array ( 0 => 1, 1 => 2, 2 => array ( 0 => ‘apple’, 1 => ‘banana’, 2 => ‘orange’, ), )”
a

This post does not have a Table of Contents