PHP echo/print

两种输出的差别、`print_r`/`var_dump`、以及格式化输出。

Beginner
Key Points`echo` 无返回值、可接多参数;`print` 返回 1,本质是表达式。

echo 与 print

PHP
<?php
echo "hello", " ", "world", "\n";     // 多参数

print "print 也能用\n";

// print 有返回值,所以能用在表达式里
$result = print "返回值是 1\n";
echo $result, "\n";

// echo 没有返回值
// $r = echo "x";                     // 语法错误
Output
hello world
print 也能用
返回值是 1
1
Aspectechoprint
参数个数多个一个
返回值无1
能否用于表达式不能能
速度略快略慢

In practice echo far outnumbers print. printf/sprintf handle formatting; var_dump and print_r are for debugging.

字符串里的变量

PHP
<?php
$name = "张三";
$arr = ["a" => 1];

echo "你好,$name\n";                 // 双引号解析变量
echo "你好,{$name}\n";               // 花括号明确边界
echo '你好,$name\n';                 // 单引号不解析,\n 也不转义

// 数组元素必须用花括号
echo "值:{$arr['a']}\n";

// 对象属性
$obj = new stdClass();
$obj->title = "标题";
echo "标题:{$obj->title}\n";
Output
你好,张三
你好,张三
你好,$name\n
值:1
标题:标题
Single quotes neither interpolate nor process escapes (except \' and \\). Use single quotes for plain text, double for interpolation. Array subscripts inside double quotes must be wrapped in {}.

调试输出

PHP
<?php
$data = [
    "name" => "张三",
    "tags" => ["vip", "new"],
    "age"  => 28,
];

print_r($data);
echo "\n";
var_dump($data["age"], $data["tags"]);
echo "\n";
var_export($data["tags"]);
echo "\n";
Output
Array
(
    [name] => 张三
    [tags] => Array
        (
            [0] => vip
            [1] => new
        )

    [age] => 28
)

int(28)
array(2) {
  [0]=>
  string(3) "vip"
  [1]=>
  string(3) "new"
}
array (
  0 => 'vip',
  1 => 'new',
)
FunctionShows typeOutput format
echo否原样
print_r否人类可读,适合看结构
var_dump是类型 + 长度 + 值
var_export部分合法 PHP 代码

格式化

PHP
<?php
printf("%s 今年 %d 岁,身高 %.1f 米\n", "张三", 28, 1.75);

$s = sprintf("%05d", 42);
echo $s, "\n";

echo number_format(1234567.891, 2), "\n";
echo str_pad("42", 5, "0", STR_PAD_LEFT), "\n";
Output
张三 今年 28 岁,身高 1.8 米
00042
1,234,567.89
00042

printf placeholders match C: %s, %d, %f, %05d zero-padded, %.2f two decimals. number_format is the standard for money.

Friends & Partners