php动态数组检查

时间:2012-02-07 10:38:20

标签: php

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

这可能吗?

谢谢

1 个答案:

答案 0 :(得分:0)

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;
}
相关问题