答案 1
试用var_export
您可能希望签出var_export
- 虽然它不提供与提供第二个参数相同的输出,这将导致它返回其输出而不是打印它:var_dump
$return
$debug = var_export($my_var, true);
为什么?
我更喜欢这个单行而不是使用和。我还发现输出更容易阅读,因为它只是PHP代码。ob_start
ob_get_clean()
和 之间的区别在于返回“变量的可解析字符串表示形式”,而只是转储有关变量的信息。这在实践中意味着它为您提供了有效的PHP代码(但可能不会为您提供有关变量的太多信息,尤其是在您使用资源的情况下)。var_dump
var_export
var_export
var_dump
var_export
演示:
$demo = array(
"bool" => false,
"int" => 1,
"float" => 3.14,
"string" => "hello world",
"array" => array(),
"object" => new stdClass(),
"resource" => tmpfile(),
"null" => null,
);
// var_export -- nice, one-liner
$debug_export = var_export($demo, true);
// var_dump
ob_start();
var_dump($demo);
$debug_dump = ob_get_clean();
// print_r -- included for completeness, though not recommended
$debug_printr = print_r($demo, true);
输出的差异:
var_export(在上面的例子中):$debug_export
array (
'bool' => false,
'int' => 1,
'float' => 3.1400000000000001,
'string' => 'hello world',
'array' =>
array (
),
'object' =>
stdClass::__set_state(array(
)),
'resource' => NULL, // Note that this resource pointer is now NULL
'null' => NULL,
)
var_dump(在上面的例子中):$debug_dump
array(8) {
["bool"]=>
bool(false)
["int"]=>
int(1)
["float"]=>
float(3.14)
["string"]=>
string(11) "hello world"
["array"]=>
array(0) {
}
["object"]=>
object(stdClass)#1 (0) {
}
["resource"]=>
resource(4) of type (stream)
["null"]=>
NULL
}
print_r(在上面的例子中):$debug_printr
Array
(
[bool] =>
[int] => 1
[float] => 3.14
[string] => hello world
[array] => Array
(
)
[object] => stdClass Object
(
)
[resource] => Resource id #4
[null] =>
)
警告:不处理循环引用var_export
如果您尝试转储带有循环引用的变量,调用将导致 PHP 警告:var_export
$circular = array();
$circular['self'] =& $circular;
var_export($circular);
结果在:
Warning: var_export does not handle circular references in example.php on line 3
array (
'self' =>
array (
'self' => NULL,
),
)
另一方面,当遇到循环引用时,和 都将输出字符串。var_dump
print_r
*RECURSION*
答案 2
使用输出缓冲:
<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>
推荐
-
相当于Java中PHP的crypt函数 我正在将我的PHP代码迁移到Google App Engine - Java。因此,我需要一个相当于Java中PHP的crypt函数,因为我已将使用crypt的注册用户的所有密码存储在我的数据库中。 编辑1:这是我用于加密密码的php
-
需要有关如何从接受语言请求标头获取首选语言的示例 我需要一个代码示例或库来解析标头并返回我的首选语言。 指出: “接受语言请求标头”字段类似于“接受”,但限制首选作为请求响应的自然语言集。语言标记在第 3.10 节中定义。
-
无法在 Java 和 PHP 之间交换使用 AES-256 加密的数据 我的问题是:我在Java中加密的东西,我可以在Java中完全解密,但PHP不能解密。我用加密的内容可以使用 解密,但不能在 Java 中解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我
-
-
Quercus是Java环境中PHP的可行替代品吗? 对于任何偶然发现这个问题的人,他们不知道是什么 - 它是用Java完成的PHP的实现。 对于我目前正在从事的项目,我们通过cgi在servlet上提供php页面(我知道它很笨拙,但这是支持遗留代码的要求
标签