正如 AlmaDoMundo 的回答所示:使参数可选:
function myFunction($arg1, $arg2, $arg3 = null)
{
}
然后,为了避免警告(未定义的索引),您必须像这样调用该函数:
if (isset($_POST['example']))
{
myFunction($var1, $var2, $_POST['example']);
}
else
{
myFunction($var1, $var2);
}
如果由于某种原因您无法更改函数定义(因此,它是签名),只需像这样调用函数:
$var3 = isset($_POST['example']) ? $_POST['example'] : null;
myFunction($var1, $var2, $var3);//null is a value, so you're passing 3 arguments
以第二种方式调用你的函数myFunction($var1, $var2, isset($_POST['example']));
不是前进的方向。只看isset
签名
bool isset ( mixed $var [, mixed $... ] )
它返回一个bool
(真/假),而不是变量本身的值。如果键存在,您的函数将true
作为第三个参数接收,如果不存在false
。您想传递实际值,因此您必须将代码包装在if/else
分支中,或者使用三元 ( myFunction($var1, $var2, isset($_POST['example']) ? $_POST['example'] : null);
。
就我个人而言,我不会在这里使用三元,因为第一个示例说明了如何调用我给出的函数这里更具可读性(编写可维护的代码很重要!)
在通知中:
您说如果您通过了,您不会看到任何错误/警告$_POST['example']
(您应该引用'example'
, BTW,因为这也应该发出警告)。尝试将您的 ini 设置更改为:
error_reporting = E_ALL | E_STRICT
#and
display_errors = 1
display_startup_errors = 1 # careful here!
然后,您将看到您的代码确实存在多少问题。查看手册以了解每个设置的作用、如何以及何时使用它们。