PHP面试之几个输出函数

273 阅读2分钟

echo

echo输出一个或多个字符串,不会换行

当给echo传递多个参数时,不能使用小括号

echo "hello","world!";
/*
* helloworld!
*/

print

输出字符串,返回值为1

字符串参数可以使用括号也可以不使用括号

print("helloWorld");
echo PHP_EOL;
print "helloWorld";
/*
* helloWorld
* helloWorld
*/

echo与print区别:

  1. 二者都是语言结构不是函数,可以接受的参数类型都是字符串
  2. echo可以接受多个参数,而且无返回值
  3. print只接受一个参数,总返回1

printf

输出格式化字符串

$str1 = 'hello';
$str2 = 'printf';
printf('%s %s',$str1,$str2);
/*
* hello printf
*/

这里要注意printf返回值是结果的长度:

$str1 = 'hello';
$str2 = 'printf';
$len = printf('%s %s',$str1,$str2);
echo PHP_EOL;
echo "结果长度:".$len;
/*
* hello printf
* 结果长度:12
*/

sprintf

和printf差不多,但是他不打印

$str1 = 'hello';
$str2 = 'printf';
sprintf('%s %s',$str1,$str2); //结果为空

改造一下代码:

$str1 = 'hello';
$str2 = 'printf';
$str = sprintf('%s %s',$str1,$str2);
var_dump($str);
/*
 string(12) "hello printf"
*/

print_r

多用于打印数组

$arr = ['a','b'];
print_r($arr);
/*
Array
(
   [0] => a
   [1] => b
)
*/

该函数有第二个参数,默认是false,如果是true的时候,是不会输出结果的,而是直接返回信息:

$arr = ['a','b'];
print_r($arr,true); //结果为空

改造一下代码:

$arr = ['a','b'];
$res = print_r($arr,true);
var_dump($res); //这里使用var_dump主要是查看结果的类型,其结果是string
/*
string(36) "Array
(
   [0] => a
   [1] => b
)
"
*/

var_dump

该函数可以接受一个或多个参数:

//多参数情况
$arr = ['a','b'];
$name = 'tom';
$age = 20;
var_dump($arr,$name,$age);
/*
array(2) {
 [0]=>
 string(1) "a"
 [1]=>
 string(1) "b"
}
string(3) "tom"
int(20)
*/

var_export

返回变量的结构信息,而且是合法的php代码

$arr = ['a','b'];
$name = 'tom';
$age = 20;
var_export($arr);
echo PHP_EOL;
var_export($age);
echo PHP_EOL;
var_export($name);
/*
array (
 0 => 'a',
 1 => 'b',
)
20
'tom'
*/

var_export第二个参数默认是false,当true的时候,不会输出结果,会直接返回信息:

$arr = ['a','b'];
$age = 20;
$str1 = var_export($arr,true);
var_dump($str1); //这里使用var_dump主要是查看结果的类型
$str2 = var_export($age,true);
var_dump($str2);
/*
string(33) "array (
 0 => 'a',
 1 => 'b',
)"
string(2) "20"
*/

var_dump与var_export区别:

  1. var_dump可接受多个参数,无返回值,输出结果会自动换行
  2. var_export只能接受2个参数,有返回值,输出结果不会换行,而且当第二个参数为true时不会输出结果
  3. var_export输出是合法的php代码,输出的结果可以直接在php中执行