Php 在异常中使用print\r?

Php 在异常中使用print\r?,php,Php,可能重复: 我抛出一个异常并尝试在异常中包含一个变量,如下所示: throw new Exception('Oh no, an exception! ' . $variable); (其中,$variable是一个数组) 问题是,这只会在我的日志文件中放入以下内容: 不,是个例外!排列 不幸的是,我不是PHP专家,我猜这可能意味着两件事之一: 1) $variable是一个空数组 2) $varialbe是一个数组,其中包含数据,但在异常中以这样的方式输出它并不会输出它的所有内容 请让我知道

可能重复:

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

throw new Exception('Oh no, an exception! ' . $variable);
(其中,
$variable
是一个数组)

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

不,是个例外!排列

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

1) $variable是一个空数组

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

请让我知道这里的情况是否如此(我希望不是这样)

但是,如果是2),如何获得有关
$variable
的更多信息?是否可以在异常内部执行如下操作
print\r
var\u dump

throw new Exception('Oh no, an exception! ' . print_r($variable));
还是会引起问题

还是会引起问题

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

Array ( [x] => 5 [y] => 65 ) Oh no, an exception! 1
如果查看,您将看到第二个参数(如果为truthy)使函数以字符串形式返回信息,而不是立即发出信息。

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

print\r($variable,true)


读取并将第二个参数作为
true
传递,以返回字符串
$x=array();echo$x
将始终输出
数组
。您试图在字符串上下文中使用数组,而数组显示为
array
@MarcB感谢您的澄清,这对我来说现在更有意义了(我很困惑,因为我记得回显数组并正确输出)
throw new Exception('Oh no, an exception! ' . print_r($variable, true));