常见输出函数

在前面的教程中,我们经常会用到echo方法,它是一种输出方法,类似的还有print。并且在后面的教程中也会接触到var_dump()函数,它输出变量的值与数据类型。为避免大家在后面的教程中云里雾里,这里将这三个方法集中做一次说明。

echo

在前面的教程里,我们经常会用到echo方法,它表示输出一个或多个字符串。严格意义来说,echo并不属于函数,而是PHP 特定的语言构造器,因此,它也不像函数一样需要使用小括号来传递参数,单引号、双引号都可以。如果想传递多个参数,就不允许使用小括号。

下面的代码给我们揭示了echo的用法:

<?php

// 使用小括号传入字符串
echo('极速数据');// 输出:极速数据
echo PHP_EOL;// PHP_EOL常量相当于换行符,这里仅用于隔开输出结果

// 使用单引号传入字符串
echo 'https://www.jisuapi.com/';// 输出:https://www.jisuapi.com/
echo PHP_EOL;

// 使用双引号传入字符串
echo "PHP教程";// 输出:PHP教程
echo PHP_EOL;

// 使用点.连接符拼接多个参数
echo '第一个 ' . '第二个 ' . "第三个参数 ";// 输出:第一个 第二个 第三个参数 
echo PHP_EOL;

// 使用逗号,传入多个参数
echo '参数1 ','参数2 ','参数3';// 输出:参数1 参数2 参数3

在 PHP 字符串操作中,点(.)符号是连接符,用于将多个字符串合并在一起。上述代码的第 15 行,相当于向echo方法传入一个拼接好的参数,相当于echo('第一个 ' . '第二个 ' . "第三个参数 ");。而逗号(,)用于分隔参数列表,第 19 行代码相当于向echo方法逐个传入三个参数。

对于echo拼接字符串而言,使用逗号传递多个参数比较好,因为点连接符在某些运算中具有更高的优先级,某些情况可能会出错,例如下面的代码:

<?php

echo '结果:' . 1 + 2;// 输出:PHP Warning:  A non-numeric value encountered
echo PHP_EOL;

echo '结果:' , 1 + 2;// 输出:结果:3
echo PHP_EOL;

echo '结果:' . (1 + 2);// 正确输出。在点运算符优于加号或三目元运算符时,必须使用括号来保证优先级

print

printecho都是语言结构,并且都输出字符串。但printecho不同的是,print仅支持传入一个参数,并总是返回1

下面的代码展示了print的用法:

<?php

print('hello,print');// 输出:hello,print
print PHP_EOL;

print '不使用小括号我也可以正确输出';// 输出:不使用小括号我也可以正确输出
print PHP_EOL;

// print '我在错误的','边缘','试探';// 语法错误:无法传入多个参数

var_dump()

echoprint不同,var_dump()不属于语言结构,而是真正的函数。它可以输出一个或多个变量或者表达式的结构信息(包括数据类型和值),并且没有任何返回值。如果变量是数组,那将按顺序逐个展开,通过缩进来显示数组结构。

下面的代码展示了var_dump()的用法:

<?php

$str = 'I am a string';
var_dump($str);// 输出:string(13) "I am a string"

传入变量:echo 和 print

上一节中我们详细说明了变量的使用。那么现在我们来看一下变量在echoprint方法中如何使用:

<?php

$str = '我是一个字符串';

$num = 2;

$arr = array(
    '我是数组的一个元素',
    '好巧,我是数组的另一个元素',
    '我猜下一个元素是数字',
    666,
    '楼楼上,你猜对了',
    '笔者很想写很多个数组元素',
);

echo '我后面跟了个变量:',$str;// 输出:我后面跟了个变量:我是一个字符串
echo PHP_EOL;

print('我后面跟了个数组元素:' . $arr[2]);// 输出:我后面跟了个数组元素:我猜下一个元素是数字
print(PHP_EOL);

echo "使用双引号可以解析变量:$num";// 输出:使用双引号可以解析变量:2
echo PHP_EOL;

echo "如果我想解析数组元素的话,记得使用一对大括号包裹该元素:{$arr[3]}";// 输出:666
echo PHP_EOL;

传入变量:var_dump()

var_dump()相比前两个稍显复杂,这里单独进行说明。当不同的变量传入时,var_dump()将有什么样的表现:

<?php

// var_dump()

$str = '我是一个字符串';// 长度为7,但是var_dump()函数输出的是变量的字节长度,一个中文字符在UTF8中占据3个字节
var_dump($str);// 输出:string(21) "我是一个字符串"

$str = 'I am a string';
var_dump($str);// 输出:string(13) "I am a string"

// 传入数组
$arr = [
    '极速数据',
    'host'=>'https://www.jisuapi.com/',
    'PHP教程'
];
var_dump($arr);
/* 输出:
array(3) {
  [0]=>
  string(12) "极速数据"
  ["host"]=>
  string(24) "https://www.jisuapi.com/"
  [1]=>
  string(9) "PHP教程"
}
*/

// 传入多个参数
$str = '极速教程';// 字符串类型
$int = 666;// 整型
$float = 89.0;// 浮点型
$boolean = TRUE;// 布尔型
var_dump($str, $int, $float, $boolean);
/* 输出:
string(12) "极速教程"
int(666)
float(89)
bool(true)
*/

好了,echoprint都是很简单常用的输出方法,var_dump()更是开发调试过程中的“劳模”。更多关于输出的方法和细节将在后续的章节详细介绍。现在让我们迈向下一章:数据类型!