检查函数参数是否设置
问题描述:
我有一个加载蝴蝶图像的函数。检查函数参数是否设置
有三种可能的参数:颜色,角和位置
最后一个是总是明确设置,但第一2,如果没有设置,是 用随机数来确定。这意味着该功能将永远加载一个很好的随机着色和成角度的蝴蝶,除非特别设置。
我有我有这个
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')
它进行随机不管是行不通的。
我在做什么错?
答
您应该更改参数的顺序。首先放置位置,因为它总会被指定。如果你这样做,你将能够编写randombf(12)
或randombf(12, 1, 2)
甚至randombf(12, 1)
。
省略的参数将被设置为null
(如果需要,您可以指定其他任何东西,但只能是标量值),因此您只需检查变量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>';
}
让我纳入链接@马特球张贴到我的回答:
答
什么@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;
http://www.php.net/manual/en/functions.a rguments.php#functions.arguments.default – 2011-04-22 13:41:28