检查函数参数是否设置

问题描述:

我有一个加载蝴蝶图像的函数。检查函数参数是否设置

有三种可能的参数:颜色位置

最后一个是总是明确设置,但第一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') 

它进行随机不管是行不通的。

我在做什么错?

+0

http://www.php.net/manual/en/functions.a rguments.php#functions.arguments.default – 2011-04-22 13:41:28

您应该更改参数的顺序。首先放置位置,因为它总会被指定。如果你这样做,你将能够编写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>'; 
} 

让我纳入链接@马特球张贴到我的回答:

Default function arguments

什么@bazmegakapa说你的输入参数的顺序,使第二和第三参数可选是正确的。但他并没有指出关于你的代码的其他一些重要的事情。

  1. 不从函数内回声,返回结果,并从您的视图或视图相关的代码部分呼应它
  2. 写可读的变量和函数名
  3. 不覆盖的输入变量,建立新的

你的函数可能看起来类似的东西:

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; 
+0

你当然不是指'echo $ markup;':)。 – kapa 2011-04-22 14:50:38

+1

正确:)更正! – markus 2011-04-22 14:52:14

+0

+1好点。通常情况下,我没有那么严格地为这样一个小函数覆盖输入变量,但那只是我自己。 – kapa 2011-04-22 14:54:52