Php 当传递的数组是键而不是数组时抑制通知
我有一个简单的函数,它应该检查传入的参数是否是数组,是否有值。除了我将多维数组作为属性传递时,该函数工作正常。我怀疑isset()会通过,但由于该键可能不存在,它会给出一个未定义的:Php 当传递的数组是键而不是数组时抑制通知,php,arrays,Php,Arrays,我有一个简单的函数,它应该检查传入的参数是否是数组,是否有值。除了我将多维数组作为属性传递时,该函数工作正常。我怀疑isset()会通过,但由于该键可能不存在,它会给出一个未定义的: <?php $array1 = array("John","Doe"); $array2 = array(); function valid_array($array) { if (is_array($array) && count($array) > 0) {
<?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()代码>
这将抑制您的函数可能产生的任何错误(但不会修复它们)为什么要抑制该通知?它会警告您不正确的使用,顺便说一句,这种情况发生在您的功能之外。当试图调用它时,它是无效的数组访问。