【问题标题】:php function arguments var, reset argumentphp 函数参数 var, 重置参数
【发布时间】:2014-02-17 15:51:56
【问题描述】:

我创建了一个 php 函数,我想清除/重置函数的参数。

例如,我在 index.php 中声明了此函数两次:

grid_init($type='portfolio',$postNb=4,$rowNb=2);
grid_init($type='post',$postNb,$rowNb);

function grid_init($type,$postNb,$rowNb) {
?>

<div class="container" data-type="<?php echo $type; ?>" data-postNb="<?php echo $rowNb; ?>" data-rowNb="<?php echo $rowNb; ?>">
some stuff.....
</div>

<?php
}

如果我没有在我的第二个函数中指定我的参数(在上面的示例中 $postNb $rowNb),这些变量将采用在前一个函数中声明的前一个参数的值($postNb=4,$rowNb=2)...

如何在同一文件中声明的每个函数之间重置/清除函数中的参数?

【问题讨论】:

  • 你会想要使用类。
  • 类是什么意思? S抱歉我不熟悉PHP...我现在知道如何编写脚本或经典函数...
  • 请显示已声明的函数,未执行。没有理由在您正在调用的函数中使用$type='portfolio',而不仅仅是'portfolio'
  • 顺便说一句,在我的函数中,我有超过 20 个参数...

标签: php function arguments var


【解决方案1】:

要使函数具有默认参数,就像这样:

function grid_init($type, $postNb = 2, $rowNb = 4){
  echo "<div class='container' data-type='$type' data-postNb='$rowNb' data-rowNb='$rowNb'>".
  "some stuff.....".
  '</div>';
}

执行如下:

grid_init('whatever'); // will assume $postNb = 2 and $rowNb = 4;
grid_init('some_data_type', 42, 11); // overwrite your defaults

【讨论】:

  • 感谢您的回答。所以如果我在第三个参数中输入11,它会自动知道它对应于我的示例中的$rowNb?对于空论点,grid_init(,,$rowNb = 4) 会起作用吗?用php中的很多参数来做这件事并不容易......
  • 是的,如果您将11 作为第三个参数传递,并且在中间没有留下任何参数,则会将null 作为参数传递。
  • 你也可以在你的函数中考虑$args = func_get_args();。然后你就不必在你定义的函数中有任何参数,你可以测试if(isset($args[0])){/*stuff here*/}之类的。
【解决方案2】:

您似乎无法调用函数。

把你的电话改成

grid_init('portfolio',4,2);
grid_init('post','',''); // or use '' as default

a) 你可能已经声明了这样的函数

function grid_init($type, $postNb, $rowNb)
{
   // do stuff on $tyoe, $postNb, $rowNb
}

b) 您可能会多次调用该函数,每次都使用新参数

grid_init('post', 5, 4);
grid_init('somewhere', 1, 2);

函数不会记住先前调用的值。 如果需要,请将它们保存在该函数中的某个位置。

c) 你可以在你的函数中使用默认参数

默认参数在函数声明中总是排在最后。

function grid_init($type, $postNb = 2, $rowNb = 2)
{
    // do stuff on $tyoe, $postNb, $rowNb
}

叫它

grid_init('somewhere');

现在 postNb、rowNb 没有设置,但使用声明中的默认值。

d) 尽量减少参数数量!

【讨论】:

  • 感谢您的回答。我不能保持低它是一个有很多选项的插件,选项似乎不会影响我的表现......
  • 这是一个经验法则 - 但您可以按照自己喜欢的方式实施它。
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2018-07-06
相关资源
最近更新 更多