Php 用于检查POST多维数组的函数

Php 用于检查POST多维数组的函数,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有下面的函数来检查数组的键 public function check($arr, $key, $default = NULL) { return isset($arr[$key]) && !empty($arr[$key]) ? $arr[$key] : $default; } $this->check($info, 'location'); //it's working $this->check($info['birthday'], 'year');

我有下面的函数来检查数组的键

public function check($arr, $key, $default = NULL) {
    return isset($arr[$key]) && !empty($arr[$key]) ? $arr[$key] : $default;
}


$this->check($info, 'location'); //it's working
$this->check($info['birthday'], 'year'); //it's working
$this->check($_POST, 'email'); //it's working
$this->check($_POST, 'password'); //it's working
在多维数组出现之前,一切都正常


在上面的代码中,您使用了
$\u POST['email']
(一个数组)作为字符串。

不是100%确定您在寻找什么,但是请注意,如果您有email[][]字段,当您返回$arr[$key]时,您将返回一个数组。因此,在返回其值之前,必须检查$arr[$key]是否为数组

public function check($arr, $key, $default = NULL) {
    if( isset($arr[$key]) && !empty($arr[$key]) || is_array($arr[$key])) { 

       if(is_array($arr[$key])) { 
         //apply here your second level check condition

       } else return $arr[$key]; // returns its value (if it's not an array)


    } else return $default;
}
希望能有帮助


相反,如果您试图构建一个递归检查$key是否包含在多维数组中的某个位置的函数,则必须执行其他操作(这就是为什么我编写了我不能100%确定您要查找的内容)

将函数代码更改为:

public function check($arr, $key, $default = NULL) {
    return isset($arr[$key]) ? $arr[$key] : $default;
}
如果仍要检查空值(尽管isset已足够):


那么为什么不检查
$key
值是否为数组(
为_array();
),如果是,请再深入一层,如果数组更深,请再次检查数组。(当然,如果它不是一个数组,那么您只需检查值)而且如果您使用的是
empty()
,我认为没有必要使用
isset()
。我认为您没有正确地阅读OP的问题(仅供参考,我没有否决投票)。否决投票应该附有注释。谢谢
public function check($arr, $key, $default = NULL) {
    if( isset($arr[$key]) && !empty($arr[$key]) || is_array($arr[$key])) { 

       if(is_array($arr[$key])) { 
         //apply here your second level check condition

       } else return $arr[$key]; // returns its value (if it's not an array)


    } else return $default;
}
public function check($arr, $key, $default = NULL) {
    return isset($arr[$key]) ? $arr[$key] : $default;
}
public function check($arr, $key, $default = NULL) {
    return isset($arr[$key]) && (!empty($arr[$key]) || is_array($arr[$key])) ? $arr[$key] : $default;
}