检查是否设置了功能参数

Jos*_*sif 5 php random parameters function

我有一个加载蝴蝶图像的功能.

有3个可能的参数:颜色,角度位置

最后一个始终是显式设置的,但前两个(如果未设置)由随机数确定.这意味着除非特别设置,否则该函数将始终加载一个漂亮的随机颜色和角度蝴蝶.

我有这个

function randombf ($randbf,$randangle,$position) {
    $randbf = rand(1,4);
    $randangle = rand(1,4);
    echo '<div class="bf '.$position.'" style="background:url(\'images/bf_'.$randangle.'_'.$randbf.'.png\');"></div>';
}
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是,如果没有传递参数,我只想设置随机.

就像是:

if(!$randbf) {
    $randbf = rand(1,4);
}
Run Code Online (Sandbox Code Playgroud)

但如果我通过,这不起作用

randombf('1','2','whatever')
Run Code Online (Sandbox Code Playgroud)

它无论如何都执行随机.

我究竟做错了什么?

kap*_*apa 11

您应该更改参数的顺序.首先放置位置,因为它将始终指定.如果你做这种方式,您将能够写randombf(12)或者randombf(12, 1, 2)甚至randombf(12, 1).

省略的参数将被设置为null(如果需要,您可以指定其他任何内容,但只能指定标量值),因此您只需要检查var是否存在is_null().

function randombf ($position, $randbf = null, $randangle = null) {
    if (is_null($randbf)) $randbf = rand(1,4);
    if (is_null($randangle)) $randangle = rand(1,4);
    echo '<div class="bf '.$position.'" style="background:url(\'images/bf_'.$randangle.'_'.$randbf.'.png\');"></div>';
}
Run Code Online (Sandbox Code Playgroud)

让我把@Matt Ball的链接加入到我的回答中:

默认函数参数