2013-01-03 52 views
4

這是一個超級簡單的數組打印,但是當我使用print_r的時候我得到了最後的結果。爲什麼我的印刷陣列末尾有1個?

<?php 
    $user_names = array(1, 2, 3, 4); 
    $results = print_r($user_names); 
    echo $results; 
?> 

然後我得到:

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 4 
) 
1 
+0

print_r有第二個參數,叫做'return'。如果你正在迴應print_r – user1909426

回答

11

print_r已經打印陣列 - 沒有必要echo其返回值(這是true,因此將最終成爲1時轉換爲字符串):

當返回參數爲TRUE,這個函數將返回一個字符串。否則,返回值爲TRUE。

下將做工精細,太:

$results = print_r($user_names, true); 
echo $results; 

這是沒有意義的,雖然除非你不總是顯示的結果讓他們之後。

+0

天哪,那麼將其設置爲true,你們在這個網站上都很棒。非常感謝...謝謝! – Peter

+1

我已經使用了print_r($ var,$ true);捕獲一些東西(比如$ _SESSION)作爲一種快速和骯髒的調試技術,並讓服務器通過電子郵件將它發送給我。 – Doon

1

你得到它,因爲

echo $results; 

由於$結果包含print_r函數的結果是TRUE(1)

print_r可以返回字符串而不是回顯它。要做到這一點,你必須通過第二個參數 - 真:

$results = print_r($user_names, true); 

所以,你有兩個選擇。刪除echo $結果或保留它,但將第二個參數傳遞給print_r。

0

print_r打印出結果在屏幕上,如果你需要返回一個字符串,而不是印刷,你應該通過第二個參數的函數:

<?php 
$user_names = array(1, 2, 3, 4); 
$results = print_r($user_names, true); 
echo $results; 

更多信息:http://php.net/manual/en/function.print-r.php

0

print_r實際打印結果,如果你想它返回結果,使用print_r($user_name, true)'

所以這些都會做你想做的。

<?php 
    $user_names = array(1, 2, 3, 4); 
    print_r($user_names); 
?> 

<?php 
    $user_names = array(1, 2, 3, 4); 
    $results = print_r($user_names,true); 
    echo $results; 
    ?> 
0

既然你給print_r沒有第二個參數,它會做印刷本身並返回1.然後保存這一個,並打印出來。嘗試:

$results = print_r($user_names, true); 

退房的文檔爲print_r

如果你想捕捉的print_r()輸出,使用返回參數。當此參數設置爲TRUE時,print_r()將返回信息而不是打印它。