2

可能重复:
将 print_r 结果放入变量中

我抛出一个异常并试图在异常中包含一个变量,如下所示:

throw new Exception('Oh no, an exception! ' . $variable);

$variable(数组在哪里)

问题是,这只会将以下内容放在我的日志文件中:

不,例外!大批

不幸的是,我不是 PHP 专家,我猜这可能意味着以下两件事之一:

1) $variable 是一个空数组

2) $varialbe 是一个包含数据的数组,但在异常中输出它并不会输出其所有内容

如果 1) 是这种情况,请告诉我(我希望不是)

但是,如果 2) 是这种情况,我怎样才能获得有关的更多信息$variable?是否可以执行print_rvar_dump在异常内部执行如下操作:

throw new Exception('Oh no, an exception! ' . print_r($variable));

还是会导致问题?

4

3 回答 3

9

还是会导致问题?

是的,它会。将print_r在字符串完全构造之前评估,如果您尝试打印出Exception消息,输出将如下所示:

大批
(
    [x] => 5
    [y] => 65
)
哦不,一个例外!1

要解决此问题,您需要确保将print_r's$return参数设置为true以便返回值而不是回显:

throw new Exception('Oh no, an exception! ' . print_r($variable, true));
于 2012-12-07T14:58:37.350 回答
6

使用第二个参数 true 来返回输出而不是立即输出。

print_r($variable, true)

文档是你的朋友

于 2012-12-07T14:58:49.640 回答
4

如果您查看 的文档print_r,您会看到第二个参数(如果为真)会导致函数将信息作为字符串返回,而不是立即发出。

于 2012-12-07T14:58:42.947 回答