2012-02-11 10 views
1

なぜそれがデフォルトでPHP - 連結されたprint_rが順番に印刷されないのはなぜですか?

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

答えて

8

print_r()機能がないリターンデフォルトで文字列を行います。あなたもそれを伝える必要があります。それを呼び出すと、自動的にその出力が出力バッファに書き込まれます。 echoステートメントはまだ連結されているので、まだエコーされていません。配列が最初に印刷され、エコーラインが連結された後に印刷されます。 print_r()作るむしろ、すぐにそれを送信するよりも、その出力を返す、その二番目のパラメータを指定するには

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

print_rことで印刷を行う - それは、文字列を返しません。

したがって、2番目の出力で得られる "1"は戻り値print_rです。

print_r($_FILES['upload'], TRUE)には、連結に含める文字列を返すようにします。

the PHP manual page on print_rを参照してください。

2

print_rは、そのデータを画面に直接出力します。たとえばますprint_rするために、第2のパラメータを追加してみてください:

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

php.net/print_r

ザッツますprint_rは、画面上の値を出力しますので、あなたが入れたときエコーではエコーも戻り値を出力します

2

デフォルトでは、print_r()は変数の内容を表示します。それを返さない。

あなたは内容が文字列として返すことをしたい場合は、print_r()を呼び出すときに、2番目のパラメータとしてtrueを渡す必要があります:

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


をあなたがこれを呼び出す場合:

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

その後最初の行はechoで、文字列が表示され、2行目に変数の内容が表示されます。一方


、あなたがしなければ、これは:

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

print_r()関数が呼び出され、変数の内容を表示し、され、その後、print_r()の戻り値があります他の文字列に連結され、表示されます。

関連する問題