echo 和 print_r 的奇怪输出

bar*_*317 -3 php

我发现了一些奇怪的行为,无法解释发生了什么:

$e = 3;
echo "with array " . print_r($e);
Run Code Online (Sandbox Code Playgroud)

给出:

3with array 1
Run Code Online (Sandbox Code Playgroud)

为什么?

u_m*_*der 5

连接是在任何输出之前完成的,因此:

echo "with array " . print_r($e);
Run Code Online (Sandbox Code Playgroud)

  1. 得到结果print_r. print_r打印3返回TRUE.
  2. with array用 . 连接起来的字符串TRUE。的字符串表示形式TRUE1
  3. 摘要:要输出的字符串是3with array 1

如果您想print_r返回而不是打印它 - 使用它的第二个参数:

echo "with array " . print_r($e, true);  // `with array 3`
Run Code Online (Sandbox Code Playgroud)