3

可能重复:
PHP ToString() 等价物
如何将 PHP 对象转换为字符串?

我正在寻找一个可以采用任何类型的变量(原始、对象、数组......)并将其转换为字符串的函数,以用于调试目的。

这是我能找到的关于将对象转换为字符串的最佳问题。它的答案似乎不包含可以处理各种对象的通用解决方案。我已经尝试过(string)x,strval(x)serialize(x), 也json_encode(x)来自这个答案

(string)xstrval(x)原因Object of class Foo could not be converted to stringjson_encode(x)为我返回一个空字符串。serialize()确实有效,但它的输出不仅是文本的(它包含奇怪的“NULL”并且有点难以阅读。

我尝试在 Stack Overflow 上搜索Object of class Foo could not be converted to string,但发现大量特定问题的投票数为零且没有通用解决方案。

问题再次 - 如何漂亮地打印/将任何 php 值转换为 php 中的字符串?

4

3 回答 3

4

我通常会去print_r,到目前为止对我来说效果很好。

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

print_r — 打印关于变量的人类可读信息

于 2013-01-03T16:02:31.297 回答
3

我更喜欢:

print_r($object, true);

这确实将对象的漂亮视图打印到字符串中。

于 2013-01-03T16:00:05.003 回答
1

如果这只是为了调试,最简单的解决方案是使用print_rvar_dump。如果您在 HTML 文档中显示它,您可以将<pre>标签包裹起来以使其格式清晰易读。

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

示例输出

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

print_r( $object );

print_r使用\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
)
于 2013-01-03T16:01:26.577 回答