PHP - 为什么拼接的print_r打印乱序?

时间:2012-02-11 20:00:22

标签: php

为什么会这样?

echo "Value of FILES['upload'] ";
print_r($_FILES['upload']);

打印Value of FILES['upload'] Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 )

,而

echo "Value of FILES['upload'] ".print_r($_FILES['upload'])."<br/>";

打印Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) Value of FILES['upload'] 1

5 个答案:

答案 0 :(得分:9)

print_r默认情况下是打印 - 它不会返回字符串。

因此,您在第二个输出中获得的“1”是print_r的返回值。

您希望print_r($_FILES['upload'], TRUE)使其返回字符串以包含在您的串联中。

请参阅the PHP manual page on print_r

答案 1 :(得分:9)

默认情况下,print_r()函数不会返回字符串。你必须告诉它。调用它时,它会自动将其输出写入输出缓冲区。由于您的echo语句仍处于连接过程中,因此尚未回显。因此,首先打印您的数组,然后在连接完成后打印回显线。

要使print_r()返回其输出而不是立即发送,请指定其第二个参数:

echo "Value of FILES['upload'] ".print_r($_FILES['upload'], true)."<br/>";

答案 2 :(得分:3)

php.net/print_r

那是因为print_r在屏幕上打印你的值,当你把它放在echo中时,你的echo也打印出它的返回值

答案 3 :(得分:2)

print_r直接将其数据输出到您的屏幕。尝试将第二个参数添加到print_r中,例如:

echo " Hello world: " . print_r($my_array, true);

答案 4 :(得分:2)

默认情况下,print_r()会打印变量的内容;不归还。

如果您希望将该内容作为字符串返回,则在调用true时,您必须将print_r()作为第二个参数传递:

echo "blah : " . print_r($myVariable, true);


如果你这样称呼:

echo "Value of FILES['upload'] ";
print_r($_FILES['upload']);

然后,第一行显示一个echo,显示一个字符串,然后,第二行显示变量的内容。


另一方面,如果你这样做:

echo "Value of FILES['upload'] ".print_r($_FILES['upload'])."<br/>";

然后,调用print_r()函数,并显示变量的内容,然后将print_r()的返回值连接到其他字符串并显示。