为什么print_r和var_dump在echo之前执行

wan*_*est 2 php

我正在调用一个var_dump()print_r()在一个echo语句中有一个值的数组:

echo "<br><br>testArray is ==> " . var_dump($testArray) . " <===<br><br>";
Run Code Online (Sandbox Code Playgroud)

这是浏览器中的实际输出:

array
0 => string '28' (length=2)


testArray is ==> <===
Run Code Online (Sandbox Code Playgroud)

这是我无法得到的细微差别.对我来说,执行的顺序是:

  1. echo执行并显示 testArray is ==>
  2. 对var_dump的调用执行并显示数组内容
  3. 那么<==应该执行

而不是在输出上看到1,2,然后是3,我2, 1, 3按顺序看到了.这是一行服务器端代码.这个细微差别是什么?

jpr*_*itt 9

他们这样做是因为他们没有返回数据,他们正在回应.你可以做到print_r($array, true)返回,但var_dump()将需要输出缓冲.

如果您希望它按照您尝试制作它的方式工作,请将它们分成不同的调用.

  • +1`var_dump`和`print_r`的默认行为从来没有对我有意义.`print_r`的第二个参数是救生员. (2认同)