2009-09-21 18 views
0

代码是短暂的,但完整如何让这个PHP代码片段在没有警告的情况下工作?

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


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

大家都知道,调用empty($arr['nosuchkey'])绝不会报告警告。

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

有没有禁用警告的解决方法;说,按语法?

+0

什么是警告味精? – powtac 2009-09-21 14:36:59

回答

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

在函数检查之前检查函数绝对无用 – 2009-09-21 13:51:14

+2

是的,请避开@运算符。 – smack0007 2009-09-21 13:51:42

+0

我认为这是一个有点缩减的例子... – Greg 2009-09-21 13:52:24

2

试试这个

function process(&$obj) 

林不知道是否会工作

+0

它的工作原理。这就是我即将写作的内容。 – Gumbo 2009-09-21 13:53:24

+0

我记得不工作,但不知道。 – omg 2009-09-21 13:57:52

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; 

} 

请不要隐藏与@警告只要有可能。

相关问题