2013-01-03 42 views
1

可能重複:
PHP ToString() equivalent
How to convert a PHP object to a string?如何將任何對象轉換爲字符串,用於調試目的?

我在尋找一個可以接受任何類型變量的函數(原始,對象,數組,...)並轉換它爲一個字符串,用於調試目的。

這是關於將對象轉換爲字符串的the best question I could find。它的答案似乎沒有包含可以處理各種對象的通用解決方案。我試過(string)xstrval(x)serialize(x),還有this answerjson_encode(x)

(string)x and strval(x) cause Object of class Foo could not be converted to stringjson_encode(x)爲我返回一個空字符串。 serialize()確實工作,但其輸出不僅是文本(它包含奇怪的「NULL」,並且有點難以閱讀。

我試過搜索堆棧溢出爲Object of class Foo could not be converted to string,但發現一噸的具體問題得到零upvotes和?沒有一般的解決方案

的問題,再一次 - 如何漂亮的打印/轉換任何PHP的值轉換成字符串在PHP

+0

我得到了我的答案打印人類可讀的信息://計算器。 com/a/3559247/11236 - 投票結束這一項。 – ripper234

回答

2

我通常去print_r,對我的偉大工程至今。

PHP手冊:http://php.net/manual/en/function.print-r.php

print_r的 - 它實際上是對這個問題的答案第五 - - HTTP關於可變

+0

我以爲這個答案是無用的,因爲'print_r'只是不適合我,但後來我意識到print_r ***默認打印***,並且不會返回正確的值。使用'print_r(foo,true)'返回值! – ripper234

1

我喜歡:

print_r($object, true); 

這確實將對象的一個​​很好的視圖打印到一個字符串中。

0

如果這只是爲了調試,最簡單的解決方案是使用print_rvar_dump。 如果您在HTML文檔中顯示此內容,則可以包裝<pre>標籤以使其格式良好可讀。的

$object = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

print_r($object); 

print_r

<pre>  
<?php print_r($object); ?> 
</pre> 

輸出示例使用\n\t格式化:

mysqli Object 
(
    [affected_rows] => 0 
    [client_info] => 5.1.62 
    [client_version] => 50162 
    [connect_errno] => 0 
    [connect_error] => 
    [errno] => 0 
    [error] => 
    [error_list] => Array 
     (
     ) 

    [field_count] => 0 
    [host_info] => 127.0.0.1 via TCP/IP 
    [info] => 
    [insert_id] => 0 
    [server_info] => 5.5.20 
    [server_version] => 50520 
    [stat] => Uptime: 11556798 Threads: 2 Questions: 1351931648 Slow queries: 421 Opens: 225532 Flush tables: 1 Open tables: 1017 Queries per second avg: 116.981 
    [sqlstate] => 00000 
    [protocol_version] => 10 
    [thread_id] => 171160 
    [warning_count] => 0 
) 
+0

甚至是'var_export()'。 –

+0

print_r對我不起作用:'print_r(stateArr)'產生'1'而 'serialize(stateArr)'產生'a:1:{s:5:「error」; b:0;}' – ripper234

+0

' var_dump'更糟糕,它不會打印任何東西。 – ripper234

相關問題