大家好日子。
我正试图找出一种方法来为函数使用多个标志,而不会增加参数的数量。
例如,使用它像some_func(flag1 | flag2 | flag3);
现在我就这样做了
define('flag1', 1);
define('flag2', 2);
define('flag3', 4);
function flagtest($flags)
{
if ($flags & flag1)
echo 'flag1 is on, ';
if ($flags & flag2)
echo 'flag2 is on, ';
if ($flags & flag3)
echo 'flag3 is on, ';
}
flagtest(flag2 | flag3);
它标志着标志2和标志3开启。
所以,一切正常。但是......我确信有更好的方法来做到这一点......是吗? 所以,问题是 - 我怎样才能让它变得更好?我确信有一种正确的方法来实现这样的东西。
答案 0 :(得分:2)
显然这是它应该做的方式。如果期望的结果如上所述,则无需以任何其他方式进行。
答案 1 :(得分:1)
您可能希望为$flags
参数使用数组,如下所示:
function flagtest($flags = false)
{
if (is_array($flags)
{
foreach ($flags as $index => $value)
{
if ($value == true) echo "flag $index is on\n";
}
}
}
$my_flags = array(true, true, false);
flagtest($my_flags); // -> flag1 is on, flag2 is on,