2012-02-07 62 views
0

海兰,PHP动态数组检查

我有子排列多维数组和这样的东西:

[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][]并且只有ckech 80,80,A0 and 30

这可能吗?

谢谢

+2

听起来有点混乱,你怎么0/1级是什么意思? – 2012-02-07 10:41:10

+0

如果level是1我想检查给定的键是否存在$ array [21] []键(在这种情况下只有:80,80,A0和30') - 通常它会是'array_keys_exist($ array [ 21] [A4])... $ array [21] [A6] ... $ array [21] [A9] ... $ array [21] [AC]' – pufos 2012-02-07 10:45:50

回答

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; 
}