在PHP中,如果我们想在页面上显示一些东西,就要用到输出语句。

PHP 输出内容主要有 6种方式,分别为:echoprintprint_rprintfsprintfvar_dump等语句或函数:

A、echo语句

echo 实际上不是一个函数,是php语句,因此您无需对其使用括号。

  1. <?php
  2. # 正确的使用echo语句
  3. echo 1; // 正确的使用方式
  4. echo '你好'; // 正确的使用方式
  5. echo "hello world"; // 正确的使用方式
  6. # 错误的使用echo语句
  7. echo('1'); // 错误的使用方式,echo不是一个函数
  8. $test = echo 1; // 错误的使用方式,echo不能用于赋值

对于数组的读取,我们比较特殊,按照数组的维度,我们使用[键名]的方式,读取对应的键值内容。

下面我们来试验下:

  1. <?php
  2. # 先定义一个数组变量,变量是什么会在下面章节讲到
  3. $data = [
  4. 0 => '小黄牛',
  5. 'name' => '好帅',
  6. ];
  7. # 根据键名,输出对应的键值内容
  8. echo $data[0];
  9. echo $data['name'];

B、print语句

1、print 实际上也不是一个函数,是php语句,因此您无需对其使用括号。

2、同时,echo速度会比print快一些。

3、并且,print有个特点,他是支持函数方式使用,并且print的返回值是固定1,所以支持赋值使用。

  1. <?php
  2. $test = print("hello world"); // 这样的使用方式是正确的,变量$test的值会是1
  3. print "hello world"; // 这样使用,效果跟echo一样

C、print_r()函数

1、print_r()是一个函数,而不是php语句,因此使用的时候必须要对其使用括号。

2、如果print_r()的参数的数据类型是string, int又或是float, 将会直接输出其内容。

3、如果print_r()的参数的数据类型是一个数组(array),则会输出一个格式化后的数组,便于阅读。

4、注意:print_r()函数最多可传递两个参数,第一个是变量或内容,第二个可设为true,如果设为true,则会返回字符串,否则返回bool类型下的true,而不是1

  1. <?php
  2. $str = "hello world"; // 先定义一段字符串
  3. $test = print_r($str); // $test变量获得赋值内容true,同时print_r会打印出$str的字符串内容到页面中
  4. echo $test; // 这时候$test的值是true

老师提醒:运行过上面代码的同学应该会发现,最后输出$test的页面结果居然是1,实际上在PHP中,类型是无法直接输出到页面中的,true将自动转换为1,而false会自动转换成0!

D、printf()函数

1、printf()是一个函数,而不是php语句,因此使用的时候必须要对其使用括号。

2、printf()是一个比较有意思的函数,他可以传递无限个参数,第一个是字符串参数,之后的参数则可以是任意变量、字符串或数字。

3、在printf()函数,的第一个参数中,有一个小小的概念,叫占位概念。

4、例如,我们想打印一份成绩单,内容是:广州中学3班,小明同学,语文80分。如果我不想每打印一条,就改一次这段内容,那该怎么做呢?

5、这时候占位的概念就可以很轻易解决我们这个难题,我们使用%s符号,暂时代替我们想要变动的地方,例如:广州中学%s班,%s同学,%s %s分

6、再使用printf()函数替换掉我们需要更换的内容即可。

7、注意:printf()函数会直接输出更换后的内容;同时,printf()函数的返回值,是更换后的字符串长度(字节)。

  1. <?php
  2. # 使用占位符,暂时代替需要替换的内容
  3. $str1 = '广州中学%s班,%s同学,%s %s分。';
  4. # 创建需要替换的内容
  5. $str2 = 3;
  6. $str3 = '小明';
  7. $str4 = '语文';
  8. $str5 = 80;
  9. # 使用printf()函数,依次从左到右开始替换
  10. $test = printf($str1, $str2,$str3,$str4,$str5); // 这里会直接输出替换后的内容
  11. echo $test; // 将会输出更换后的字符串长度,为49

老师提醒1:在实际开发中,占位概念是经常会用到的一种简单的思维运用,例如:
1、最常用的生成电子协议
2、微信开发的xml内容替换
3、发短信时的 短信内容替换等

老师提醒2:在上述代码中,老师使用的占位符是%s,实际上printf()函数还有很多其他类型的占位符,不过都不常用,所以只需要了解存在即可。

E、sprintf()函数

1、sprintf()是一个函数,而不是php语句,因此使用的时候必须要对其使用括号。

2、sprintf()函数的作用和printf()函数的作用一样,但他不会直接输出替换后的内容,而是保存在返回值中。

  1. <?php
  2. # 使用占位符,暂时代替需要替换的内容
  3. $str1 = '广州中学%s班,%s同学,%s %s分。';
  4. # 创建需要替换的内容
  5. $str2 = 3;
  6. $str3 = '小明';
  7. $str4 = '语文';
  8. $str5 = 80;
  9. # 使用printf()函数,依次从左到右开始替换
  10. $test = sprintf($str1, $str2,$str3,$str4,$str5); // 这里不会输出内容
  11. echo $test; // 输出替换后的内容

F、var_dump()函数

1、var_dump()是一个函数,而不是php语句,因此使用的时候必须要对其使用括号。

2、var_dump()函数的作用和print_r()函数的作用一样,唯一不同的是:var_dump()函数可以输出内容的数据类型 与 长度。

  1. <?php
  2. # 创建测试数组
  3. $test = [
  4. 1 => '老师最棒',
  5. 2 => 'hello world',
  6. ];
  7. # 输出数组结构
  8. var_dump($test);
  9. # 结果如下:
  10. /*
  11. array(2) {
  12. [1]=>
  13. string(12) "老师最棒"
  14. [2]=>
  15. string(11) "hello world"
  16. }
  17. */

老师提醒:在实际开发中,80%的场景都只是用到了:echovar_dump()sprintf(),这1个语句和2个函数。