0

对于我的一个 WordPress 网站,我想制作一个包含许多变量的广泛自定义 PHP 函数,其中一些变量很容易作为可选函数,例如:

<?php    
function customFunction( $variable1, $variable2 = null, $variable3, $variable4 ) {
       if ( !$variable1 == null ) { echo 'something'; } else { echo $variable1; }
       if ( !$variable2 == null ) { echo 'something more'; } else { echo $variable2; }
       if ( !$variable3 == null ) { echo 'something else'; } else { echo $variable3; }
       if ( !$variable4 == null ) { echo 'something other than this'; } else { echo $variable4; }
    return $variable1;
    return $variable2;
    return $variable3;
    return $variable4;
    }
?>

请注意,$variable2是可选的并且包含一个默认NULL值。

现在,如果我使用如下功能:

<?php customFunction( '1', '2', '3', '4' ); ?>

然后它会理解根据函数中变量的序列来放置数字,如:

$variable1 = 1;
$variable2 = 2;
$variable3 = 3;
$variable4 = 4;

但由于$variable2是可选的,如果我跳过它,结果会是什么?我猜:

<?php customFunction( '1', '3', '4' ); ?>

$variable1 = 1;
$variable2 = 3;
$variable3 = 4;
### ERROR ###

我对吗?或者,事情是别的什么?

如果我是对的,那么
使用强制值和可选值创建函数或对函数进行排序的正确方法是什么?

4

3 回答 3

2

你必须这样称呼它

<?php customFunction( '1','', '3', '4' ); ?>

或者

<?php customFunction( '1', , '3', '4' ); ?>

您有一个固定/静态输入列表,因此该函数需要相同的传入 arg 计数,只有 arg 列表中的最后一个可以完全省略。您也可以按照其他人的建议传入一个数组。

你也不能像这样退回多个项目

return $variable1;
return $variable2;
return $variable3;
return $variable4;

您将不得不返回这样的项目数组

return array("Var1" => $variable1,"Var2" => $variable2,"Var3" => $variable3,"Var4" => $variable4);

所以如果你这样做了$functionoutput = customFunction( '1', '2', '3', '4' ); 那么你可以像下面一样访问返回

echo $functionoutput['Var1'];
echo $functionoutput['Var2'];
echo $functionoutput['Var3'];
echo $functionoutput['Var4'];

希望这是有道理的

于 2013-06-24T09:57:35.793 回答
0
  1. 您的参数无效。非可选参数之前不允许有可选参数。

  2. 为了解决您的问题,我建议使用数组作为参数并检查其项目。

于 2013-06-24T09:51:24.493 回答
0

如果您想拥有具有不同参数的类似功能,那么您正在寻找重载。请参阅此链接。

什么是php中的函数重载和覆盖?

于 2013-06-24T09:50:36.150 回答