我试图将一个变量列表放入一个数组中(对于一个错误报告类),但是如果该变量未设置则不会被“压缩”。
以下是代码摘录:
$testVar1 = 123;
$testVar2 = 'ABC';
$ErrorArray = compact('testVar1', 'testVar2', 'notSetVar');
然后我用:
遍历$ ErrorArrayforeach($ErrorArray as $key => $value) {
$TempErrorMessage .= '$'.$key.' == '.$value.' ---- ';
}
结果输出为:
$ testVar1 == 123 ---- $ testVar2 == ABC ----
问题是,我想将“notSetVar”输出为“”/ NULL,因为这可能是我的错误所在......
任何建议都会受到欢迎!
最诚挚的问候 福特
答案 0 :(得分:1)
根据PHP文档 http://php.net/manual/en/function.compact.php
compact创建一个包含变量及其值的数组。
对于其中的每一个,compact()在当前符号表中查找具有该名称的变量,并将其添加到输出数组,以便变量名称成为键,变量的内容将成为该键的值。简而言之,它与extract()完全相反。
任何未设置的字符串都将被忽略。
因此,除非设置,否则无法通过compact传递变量。我的建议是,在compact()之前检查变量。
$testVar1 = 123;
$testVar2 = 'ABC';
if (!isset($notSetVar) {
$notSetVar = null;
}
$ErrorArray = compact('testVar1', 'testVar2', 'notSetVar');
var_dump($ErrorArray);