代码很短,但完成:
function process($obj)
{
if(empty($obj))return 1;
return 2;
}
echo process($arr['nosuchkey']);
众所周知,调用empty($arr['nosuchkey'])
永远不会报告警告。
但process($arr['nosuchkey'])
会报告通知。
是否有解决方法而没有禁用警告;比方说,按语法?
答案 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;
}
请尽可能不用@隐藏警告。