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的链接加入到我的回答中: