0

我有一个简单的函数,它应该检查传入的参数是否是一个数组并且有值。该函数完美运行,除非我将多维数组作为属性传递。我怀疑 isset() 通过了,但是因为密钥可能不存在,所以它给出了一个未定义的:

 <?php
 $array1 = array("John","Doe");
 $array2 = array();

 function valid_array($array) {
     if (is_array($array) && count($array) > 0) {
         return true;
     }
     return false;
 }

 // Below works great:
 valid_array($array1);

 // If I pass the following I get the notice 
 // Notice: Undefined index: sample_key in ....:
 valid_array($array2['sample_key']);     


 ?>

有任何想法吗?

4

2 回答 2

0

抑制错误的最简单方法是在调用函数之前使用“@”符号:

示例:@my_custom_function(); 这将抑制您的函数可能产生的任何错误(但不会修复它们)

于 2013-03-10T18:09:26.473 回答
0

这意味着,没有数组项sample_key作为其键。用于isset()验证,不要压制它。

if(isset($array2['sample_key'])) 
    valid_array($array2['sample_key']); 

这种情况称为Exceptions捕获它们并引发错误。

这是一种在使用时引发错误的方法。

function valid_array(array $array) {
                 //    ^ Asks for a generic array to be passed
     if (is_array($array) && count($array) > 0) {
         return true;
     }
     return false;
 }
于 2013-03-10T18:05:56.667 回答