PHP中如何在函数中处理缺少参数和空值。

3

我希望有一个函数,如果没有传递参数,就会发出错误信号。现在它会发出警告,但会执行代码。

我查看了这个PHP错误处理缺少参数,但我认为更多的是将输入强制转换为空或零的问题。

我正在使用:

PHP 5.6.25 (cli) (built: Sep  6 2016 16:37:16)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

我有:

function go($x){
    if(is_null($x))
        print("|nil|"."\n");
    else
        print($x."\n");
}

并获得预期的结果,如下所示:

go(33);
> 33
go("Hello world");
> "Hello World"
go(null);
> |nil|

$in = null;
go($in);
> |nil|
$in = 44;
go($in);
> 44

但如果我不带参数调用它,我会得到:
go();
> Warning: Missing argument 1 for go(), called in ...
> |nil|

在这个例子中,我打印了“|nil|”,但在更大的情境中,它应该返回错误(或空值),以便在其他地方处理。
我已经研究了类似以下内容的东西:
function go($x){
    if(!isset($x)) die("muerto");

    if(is_null($x))
       print("|nil|"."\n");
    else
       print($x."\n");
}

这段代码对空和null两种情况都进行了处理。但是它会使程序中断(崩溃?)。

go();
> Warning: Missing argument 1 for go(), called in ...
> muerto

go(null);
> muerto

通常情况下,这只是更加复杂代码的一个过于简单化的例子。

非常感谢您的输入。


你的问题解决了吗? - Karol Gasienica
1
我喜欢他们只是“GET and GO”,你呢? - Funk Forty Niner
是啊...我也喜欢它 ;) - Karol Gasienica
3个回答

3

您可以使用默认值和func_num_args()函数来处理没有传递参数的情况。例如:

function go($x = null){
    if(func_num_args() === 0)
        print("error: no argument passed"."\n");
    else if(is_null($x))
        print("|nil|"."\n");
    else
        print($x."\n");
}

2
今日免费次数已满, 请开通会员/明日再来
if (isset($x)) { // or can be !empty($x)
    go($x);
} else {
    echo "Error";
{

或者(更好的方法)您可以像这样做:
function go($x = null){

在这种情况下,默认值$xnull,因此如果您在没有参数的情况下运行函数,它将变成null
因此,示例代码如下:
function go($x = null){
    if(is_null($x))
        print("|nil|"."\n");
    else
        print($x."\n");
}

关于使用的函数

函数默认值

isset()

empty()


1
也许您可以将参数的默认值设置为null,像这样...
function go($x = null){
    if($x == null){
        //handle null value
    }else{
        //do something
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接