array_key_exists

(PHP 4 >= 4.1.0, PHP 5)

array_key_exists -- 检查给定的键名或索引是否存在于数组中

说明

bool array_key_exists ( mixed key, array search )

array_key_exists() 在给定的 key 存在于数组中时返回 TRUEkey 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。

例子 1. array_key_exists() 例子

<?php
$search_array
= array('first' => 1, 'second' => 4);
if (
array_key_exists('first', $search_array)) {
    echo
"The 'first' element is in the array";
}
?>

注: 在 PHP 4.0.6 中本函数名为 key_exists()

例子 2. array_key_exists()isset() 对比

isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。

<?php
$search_array
= array('first' => null, 'second' => 4);

// returns false
isset($search_array['first']);

// returns true
array_key_exists('first', $search_array);
?>

参见 isset()array_keys()in_array()


add a note add a note User Contributed Notes
Mike Toppa
04-Aug-2006 01:43
At least in PHP 4.4.0, array_key_exists is inconsistently sensitive to different data types. For example, if your first argument is a double and the keys in your array are integers, array_key_exists will always return false. If you then cast the first argument to an integer, or even to a string, then you can successfully match. I haven't tested all the possibilities, to see when it'll tolerate different data types and when it won't, so the easiest and safest solution is to cast your first argument to match the data type of the keys.
ncurtis at cenicola-helvin dot com
09-Jul-2006 06:25
array_key_exists() does not check values in the key i wrote this function to check if a key in an array has a empty value as corresponds to values that return true for empty() an redirects to a page if specified otherwise returns false

<?php
function keysExists($array, $startingIndex, $redirectPage) {
   if(
is_array($array)) {
       if (!empty(
$startingIndex)) {
           for (
$i = 0; $i < $startingIndex; $i++) {
              
next($array);
           }
       }
       while(list(
$key, $value) = each($array)) {
           if (empty(
$value)) {
               if (!empty(
$redirectPage)) {
                  
header("Location: $redirectPage");
               } else {
                   return
FALSE;
               }
           }
       }
   } else {
       return
FALSE;
   }
}
?>
email me and let me no if you found this useful!
marzetti.marco at gmail.com
06-Jul-2006 05:44
Returns the keys in $arr matching $pattern in a regex

<?php

function regex_array_keys ( &$arr, $pattern ) {
  
$results[] = false;
   if( !
is_array( $arr ) )
       return
false;
  
   while( !
is_null( $key = key( $arr ) ) ) {
      
       if(
preg_match( $pattern, $key ) )
          
$results[] = $key;
      
next($arr);
   }
  
reset( $arr );
  

   return
$results;
}

?>
josh at nitrotech dot org
29-May-2006 09:24
Here is a simple method for searching nested arrays.

<?php

function in_array_multi_key($needle, $haystack)
{
  
// mutidimentional search for in_array function
   // only matches the key, values don't count.
  
if ( array_key_exists($needle, $haystack) )
   {
       return
TRUE;
   }

   foreach (
$haystack as $key => $value )
   {
       if (
is_array($value) )
       {
          
$work = in_array_multi_key($needle, $value);
           if (
$work )
           {
               return
TRUE;
           }
       }
   }
   return
FALSE;
}

?>

(Code from www.nitrotech.org)
09-May-2006 11:44
property_exists() does the same thing for object properties.