php动态数组检查


php dynamic array checking

Hy,

我有一个多维数组,包含子数组和类似的东西:

 [21] => Array
        (
            [80] =>
            [83] =>
            [A4] => Array
                (
                    [80] =>
                )
            [85] =>
            [A6] => Array
                (
                    [80] =>
                )
            [87] =>
            [88] =>
            [A9] => Array
                (
                    [A0] => Array
                        (
                            [80] =>
                        )
                )
            [8B] =>
            [AC] => Array
                (
                    [30] => Array
                        (
                            [81] =>
                            [82] =>
                            [83] =>
                            [84] =>
                            [85] =>
                            [86] =>
                            [88] =>
                        )
                )
            [8D] =>
            [8E] =>
            [8F] =>
            [91] =>
            [92] =>
            [93] =>
            [94] =>
            [9B] =>
            [96] =>
            [97] =>
            [9D] =>
        )

我想创建一个函数来通过一个级别来检查array_keys_exist

如果级别为0,则应为array_keys_exist($array['21']);如果级别是1,那么应该是array_keys_exist($array['21'][]),但问题是我不能使用$array[21][],只能打包80,80,A0 and 30

这可能吗?

感谢

function array_key_exists_recursive($key, $array, $levelsToCheck = 0) {
  if (array_key_exists($key, $array) {
    return true;
  }
  if($levelsToCheck > 0) {
    foreach($array as $entry) {
      if(is_array($entry) && 
         array_key_exists_recursive(
            $key, 
            $entry, 
            $levelsToCheck - 1
         )
      ) {
        return true;
      }
    }
  }
  return false;
}

或者,如果你只想检查给定深度的所有阵列:

function array_key_exists_at_depth($key, $array, $depth = 0) {
  if ($depth <= 0) {
    return array_key_exists($key, $array);
  }
  foreach($array as $entry) {
    if(is_array($entry) && 
       array_key_exists_at_depth (
          $key, 
          $entry, 
          $depth - 1
       )
    ) {
        return true;
    }
  }
  return false;
}