如何在没有警告的情况下使这个PHP代码段工作?

时间:2009-09-21 13:44:17

标签: php warnings

代码很短,但完成

function process($obj)
{
    if(empty($obj))return 1;
    return 2;
}


echo process($arr['nosuchkey']);

众所周知,调用empty($arr['nosuchkey'])永远不会报告警告。

process($arr['nosuchkey'])会报告通知。

是否有解决方法而没有禁用警告;比方说,按语法?

3 个答案:

答案 0 :(得分:4)

您可以使用error control operator @,但这会抑制不仅仅是通知。

echo @process($arr['nosuchkey']);

在函数调用之前最好先检查一下:

if (array_key_exists('nosuchkey', $arr))
    echo process($arr['nosuchkey']);

或单独传递密钥

echo process($arr, 'nosuchkey');

请确保您知道empty()isset()array_key_exists()之间的区别 - 他们会抓住很多人。

答案 1 :(得分:2)

试试这个

 function process(&$obj)

我不确定它是否会起作用

答案 2 :(得分:0)

也许

function process($obj, $index = null) {
    if(is_array($obj))
    {
         if(!array_key_exists($index, $obj))
             return 1;
         else
             return 2;
    }

    if(empty($obj)) 
        return 1;

    return 2;

}

请尽可能不用@隐藏警告。