在PHP中,当一个条件满足时,如何给出一个参数


How to give an argument when a condition has been met in PHP?

当我想给我的用户发邮件通知他们一些事件时,我将调用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和东西。我只是想知道我想要的是否可能,以及我将如何去做。

提前感谢!

当然,你也可以这样做

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

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

您必须将null传递给函数(据我所知,在邮件的情况下,这也是第五个参数的默认值)。

就像:mail($sTo, $sSubject, $sBody, $sHeader, (!$bSafeMode ? $sFifthArgument : null));这应该是允许的。参见示例:http://codepad.org/HerLr9O4:)

正如Phil在下面的评论中提到的;它可能会检查传递的参数数量(我不能在这里测试;但我希望如此)。这基本上意味着你被"如果-否则"困住了;这是完全可读的(也许甚至更好的文档!):)。