Php 为什么print_r()函数会干扰程序输出?

Php 为什么print_r()函数会干扰程序输出?,php,arrays,post,submit,form-submit,Php,Arrays,Post,Submit,Form Submit,我在一个名为file\u upload\u form.HTML的文件中编写了以下HTML代码: 当我在web浏览器中运行此代码(即通过单击Submit按钮提交HTML表单)时,我得到以下输出: Array ( [submit] => Upload Image ) Value of Post is : 1 请参阅有关文件: print_r函数的输出是如何在Post的字符串值为:之前打印的,我的下一个问题是,Post的字符串值为:,之后的值1是从哪里打印的 我的意思是为什么在程序输出中会有这

我在一个名为file\u upload\u form.HTML的文件中编写了以下HTML代码:

当我在web浏览器中运行此代码(即通过单击Submit按钮提交HTML表单)时,我得到以下输出:

Array ( [submit] => Upload Image ) Value of Post is : 1
请参阅有关文件:

print_r函数的输出是如何在Post的字符串值为:之前打印的,我的下一个问题是,Post的字符串值为:,之后的值1是从哪里打印的


我的意思是为什么在程序输出中会有这样的差异?为什么Post的字符串值是:不是先获取数组$\u Post中的值,然后获取?为什么要打印1以及它来自何处?

如果希望它返回而不是直接输出,则需要将true作为第二个参数传递给print\r

echo "Value of Post is : ".print_r($_POST); die;
请参阅:

返回

如果要捕获打印输出,请使用return参数。当此参数设置为TRUE时,print\r将返回信息,而不是打印信息


当您没有将第二个参数设置为true时,PHP将首先执行print_r并立即将变量转储到STDOUT。然后,print_r的返回值将是布尔值true。布尔值将被连接,然后打印。true类型在字符串上下文中变为1,因此Post的值为:1。

如果希望它返回而不是直接输出,则需要将true作为第二个参数传递给print\r

echo "Value of Post is : ".print_r($_POST); die;
请参阅:

返回

如果要捕获打印输出,请使用return参数。当此参数设置为TRUE时,print\r将返回信息,而不是打印信息

当您没有将第二个参数设置为true时,PHP将首先执行print_r并立即将变量转储到STDOUT。然后,print_r的返回值将是布尔值true。布尔值将被连接,然后打印。true类型在字符串上下文中变为1,因此Post的值为:1。

print\r默认情况下打印其结果本身

这一行:

echo "Value of Post is : ".print_r($_POST); die;
不会做你认为它会做的事。当它被解释时,它调用print\u r,打印输出,然后您的echo打印Post的字符串echo值:后跟您的print\r的返回值。因为它不返回任何内容,所以只返回字符串

但他们是一种让它完全按照你想象的方式工作的方法。接受第二个参数,默认设置为false:

mixed print_r ( mixed $expression \[, bool $return = false \] )
将此参数设置为true将使print\r不打印其输出本身,而是将其作为字符串返回:

echo "Value of Post is : ".print_r($_POST, true); die;
作为提示,如果您还不知道,您还可以用标签框住打印通话,以便格式化。它将使其更具可读性,特别是对于大型或多维数组:

默认情况下,print\u r打印其结果本身

这一行:

echo "Value of Post is : ".print_r($_POST); die;
不会做你认为它会做的事。当它被解释时,它调用print\u r,打印输出,然后您的echo打印Post的字符串echo值:后跟您的print\r的返回值。因为它不返回任何内容,所以只返回字符串

但他们是一种让它完全按照你想象的方式工作的方法。接受第二个参数,默认设置为false:

mixed print_r ( mixed $expression \[, bool $return = false \] )
将此参数设置为true将使print\r不打印其输出本身,而是将其作为字符串返回:

echo "Value of Post is : ".print_r($_POST, true); die;
作为提示,如果您还不知道,您还可以用标签框住打印通话,以便格式化。它将使其更具可读性,特别是对于大型或多维数组:


如果在执行代码print\u r$\u文件时出现这种情况;死亡它没有打印出1。它只打印数组元素。为什么它没有打印1,因为我没有为print\u r函数提供任何附加参数?@user2839497当您打印\u r$\u文件时,返回值没有使用,因此没有打印1。当您执行echo print_r$_文件时,它将首先转储数组,然后打印返回值,例如1。如果在执行代码print_r$_文件时出现这种情况;死亡它没有打印出1。它只打印数组元素。为什么它没有打印1,因为我没有为print\u r函数提供任何附加参数?@user2839497当您打印\u r$\u文件时,返回值没有使用,因此没有打印1。当您执行echo print_r$_文件时,它将首先转储数组,然后打印返回值,例如1。如果在执行代码print_r$_文件时出现这种情况;死亡它没有打印出1。它只打印数组元素。为什么它没有打印1,因为我没有为print_r函数提供任何额外的参数?@user2839497正如我所说,print_r自己打印它的输出,这就是为什么它这样命名。如果您尝试将其放入回显中,它将回显“1”,因为print\r在不返回其输出时返回true;死亡它没有打印出1。它只打印数组元素。Wh
y它没有打印1,因为我没有为print_r函数提供任何附加参数?@user2839497正如我所说,print_r自己打印它的输出,这就是为什么它这样命名的原因。如果您尝试将其放入回显,它将回显“1”,因为print\r在不返回其输出时返回true。