我有一个加载蝴蝶图像的功能。
有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>';
}
现在我遇到的问题是,如果没有传递参数,我只想设置随机。
类似的东西:
if(!$randbf) {
$randbf = rand(1,4);
}
但是,如果我通过
,这不起作用randombf('1','2','whatever')
无论如何都执行随机。
我做错了什么?
答案 0 :(得分: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>';
}
让我加入 @Matt Ball 链接已发布到我的回答中:
答案 1 :(得分:2)
@bazmegakapa关于输入参数顺序的说法以及使第二个和第三个参数可选是正确的。但他没有指出关于你的代码的一些其他重要事项。
你的功能看起来像这样:
function getRandomButterfly ($position, $butterfly = null, $angle = null)
{
if (is_null($butterfly)
{
$randomButterfly = rand(1, 4);
}
else
{
$randomButterfly = $butterfly;
}
if (is_null($angle)
{
$randomAngle = rand(1, 4);
}
else
{
$randomAngle = $angle;
}
$markup =
'<div class="bf '.$position.'" style="background:url(\'images/bf_'.$randomAngle.'_'.$randomButterfly.'.png\');"></div>';
return $markup;
}
$markup = getRandomButterfly(3);
echo $markup;