如何在PHP中满足条件时给出参数?

时间:2011-09-21 14:33:13

标签: php arguments conditional-statements

当我想邮寄我的用户以通知他们某些事件时,我将在PHP中调用mail()函数。我想给mail函数一个第五个参数,但是因为在safe_mode中这个被禁用,所以mail()函数在给出这个参数时会返回false。我的问题基本上是:

我如何编写这段代码:

if (!$bSafeMode) {
    mail($sTo, $sSubject, $sBody, $sHeader, $sFifthArgument);
} else {
    mail($sTo, $sSubject, $sBody, $sHeader);
}

但是以这样的方式:

mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode? $sFifthArgument : ''));

显然这段代码我告诉你不行,但我想知道是否有类似的东西,以便我可以保持我的代码更整洁。

请不要和我争论我为什么要这样做以及为什么我要检查safe_mode和东西。我只是这样做,我只想知道我想要的是否可行以及我将如何去做。

提前致谢!

2 个答案:

答案 0 :(得分:3)

当然,您可以执行类似

的操作
$args = array('foo', 'bar');
if($blah) $args[] = 'baz';
call_user_func_array('mail', $args);

但我不认为这比你的第一个片段

更好

答案 1 :(得分:1)

你必须将null传递给函数(就邮件来说,就我所知,第五个参数的默认值也是如此)。

所以它应该是:mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode ? $sFifthArgument : null));应该被允许。另请参见示例:http://codepad.org/HerLr9O4:)

菲尔在下面的评论中提到过;它可能会检查传递的参数量(我不能在这里测试;但我希望如此)。这基本上意味着你被if-else困住了;这是完全可读的(甚至可能更好的可记录!):)。