Php 当传递的数组是键而不是数组时抑制通知

Php 当传递的数组是键而不是数组时抑制通知,php,arrays,Php,Arrays,我有一个简单的函数,它应该检查传入的参数是否是数组,是否有值。除了我将多维数组作为属性传递时,该函数工作正常。我怀疑isset()会通过,但由于该键可能不存在,它会给出一个未定义的: <?php $array1 = array("John","Doe"); $array2 = array(); function valid_array($array) { if (is_array($array) && count($array) > 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']);     


 ?>


有什么想法吗?

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

if(isset($array2['sample_key'])) 
    valid_array($array2['sample_key']); 
这种情况称为异常捕获它们并抛出错误

下面是一种在使用时引发错误的方法

function valid_array(array $array) {
                 //    ^ Asks for a generic array to be passed
     if (is_array($array) && count($array) > 0) {
         return true;
     }
     return false;
 }

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

示例:
@my_custom_function()

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

为什么要抑制该通知?它会警告您不正确的使用,顺便说一句,这种情况发生在您的功能之外。当试图调用它时,它是无效的数组访问。