为什么会这样?
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
答案 0 :(得分:9)
print_r
默认情况下是打印 - 它不会返回字符串。
因此,您在第二个输出中获得的“1”是print_r
的返回值。
您希望print_r($_FILES['upload'], TRUE)
使其返回字符串以包含在您的串联中。
答案 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()
的返回值连接到其他字符串并显示。