Php 如何使函数参数成为选项?

Php 如何使函数参数成为选项?,php,function,parameters,Php,Function,Parameters,如果您有这样一个函数: function somefunc ($data, $something) { // } 当您这样调用函数时: somefunc($data); 它发送错误,表示缺少参数2。有没有办法使第二个参数可选? 谢谢试试看 function somefunc ($data, $something = null) { // } 发件人: 默认参数值 函数可以为标量参数定义C++样式的默认值,如下所示: 示例#3在函数中使用默认参数 <?php function make

如果您有这样一个函数:

function somefunc ($data, $something) {
//
}
当您这样调用函数时:

somefunc($data);
它发送错误,表示缺少参数2。有没有办法使第二个参数可选? 谢谢

试试看

function somefunc ($data, $something = null) {
//
}
发件人:

默认参数值

函数可以为标量参数定义C++样式的默认值,如下所示:

示例#3在函数中使用默认参数

<?php
function makecoffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");

?>

为此,我喜欢使用数组作为参数。这是PHP做得很好的事情之一

function foo(array $options = array())
{
      // you can set the defaults here
      $default = array('data'=>false,'something'=>'whatever');
      $options = array_merge($default,$options);
}
由于
foo()
函数将默认值应用于数组,因此您不再需要执行
isset()
检查是否缺少密钥

您可以这样调用
foo()

foo(); // pure defaults
foo(array('data'=>'stuff'));

你甚至可以有$something='',尽管Null可能是一个更好的解决方案。这个答案的第二个效果实际上是阅读后渴望咖啡——一个狡猾的策略!
foo(); // pure defaults
foo(array('data'=>'stuff'));