compact()不添加空变量

时间:2013-10-05 04:13:45

标签: php

我试图将一个变量列表放入一个数组中(对于一个错误报告类),但是如果该变量未设置则不会被“压缩”。

以下是代码摘录:

$testVar1 = 123;
$testVar2 = 'ABC';

$ErrorArray = compact('testVar1', 'testVar2', 'notSetVar');

然后我用:

遍历$ ErrorArray
foreach($ErrorArray as $key => $value) {
    $TempErrorMessage .= '$'.$key.' == '.$value.' ---- ';
}

结果输出为:

  

$ testVar1 == 123 ---- $ testVar2 == ABC ----

问题是,我想将“notSetVar”输出为“”/ NULL,因为这可能是我的错误所在......

任何建议都会受到欢迎!

最诚挚的问候 福特

1 个答案:

答案 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);