search for in the  
<in_arraykrsort>
Last updated: Thu, 19 May 2005

key

(PHP 3, PHP 4, PHP 5)

key -- Fetch a key from an associative array

Description

mixed key ( array &array )

key() returns the index element of the current array position.

Example 1. key() example

<?php
$array
= array(
  
'fruit1' => 'apple',
  
'fruit2' => 'orange',
  
'fruit3' => 'grape',
  
'fruit4' => 'apple',
  
'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
   if (
$fruit_name == 'apple') {
       echo
key($array).'<br />';
   }
  
next($array);
}
?>

See also current() and next().



User Contributed Notes
key
fiskah
23-Apr-2005 05:51
In order to check if there is a value in an array where key is something special, use this "key in array" function:

<?php
function key_in_array($needle, $haystack) {
  
$haystack = array_flip($haystack);
   if (
in_array($needle, $haystack))
   {
       return
true;
   } else {
       return
false;
   }
}
?>
happy dot machine at skynet dot be
06-May-2003 01:20
$tab = array();
$tab[0] = 'php';
$tab[1] = '.';
$tab[2] = 'net';

// you will not enter the while
// $key = 0, while will consider $key as false
reset($tab);
while ($key = key($tab) ) {
echo $tab[$key];
next($tab);
}

// this will
reset($tab);
while (!is_null($key = key($tab) ) ) {
echo $tab[$key];
next($tab);
}

// when key() can't return a 'key', it return NULL
echo var_dump($key);
shimon_d at hotmail dot com
24-Jan-2003 02:39
make array[a][b]
be    array[b][a]

function invertarray($a)
{
 $o=array();
 foreach($a as $k => $aa)
 {
  foreach($aa as $k1 => $v)
  {
   if(!isset($o[$k1]))$o[$k1]=array();
   $o[$k1][$k]=$v;
  }
 }
 return $o;
}
kajetan at kajetan dot nu
04-Jul-2002 03:20
I'm writing a forum and use an array to hold all the smiles. The keys in the array are the characters to write to get a smiley, and the data is the filename, like this
$Smiles[':-)'] = 'smile.gif'

To output all the smileys in a table with 3 columns, I wrote this code:

$the_end = false;

$s = reset($Smiles);
$k = key($Smiles);

while(!$the_end){
   echo '<tr>';
   for($i=0; $i<3; $i++){
       echo '<td>';
       if($the_end) echo '&nbsp;';
       else{
       echo $k.'< br><img src="'. $s .'">';
         $s = next($Smiles);
       if ($s==false) $the_end=true;
       else
           $k = key($Smiles);
       }
       echo "</td>\n";
   }
   echo "</tr>\n";
}

I had to write a space in the < br> tag in the code above, because the board did a line brake otherwise.
04-Jun-2002 07:13
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
mkeller at gmx dot de
11-Oct-2001 02:46
In the case key() does not give you back the key(myarray) but "0", try this:
(Try this example without the line containing "end($myarray)" and you see my reason for this post...)

for($i = 0; $i <= 10; $i++) {
       $myarray[] = 'content '.$i;
       end($myarray);
       echo ('<br>key()='.key($myarray).' , content='.$myarray[$i]);
   }
php at snr-graphics dot com
23-Mar-2001 01:50
A Method of Multi-Dimensionalizing an Associative Array (This idea was designed with Graphics (image filenames in mind):

(A quick overview):
While working on a rather large web application, I found that I needed a way to obtain "all" the details on images used by the application, these images (by filename) were stored in the configuration file, in the form of associative arrays.

The following represents an example of how I tool those and converted them into multi-dimensional associative arrays.

<code sample begin>
do {
  $size = getImageSize($path.$myarray[key($myarray)]);
  if ($size[2] == '1') { $size[2] = 'gif'; }
  else if ($size[2] == '2') { $size[2] = 'jpg'; }
  else if ($size[2] == '3') { $size[2] = 'png'; }
  else if ($size[2] == '4') { $size[2] = 'swf'; }
  else { $size[2] = 'UNKNOWN'; }
$myarray[key($myarray)] = Array($myarray[Key($myarray)],$size[0],$size[1],$size[2],$size[3]);
} while (next($myarray));
</end code sample>

The end result is an multi-dim. associative array which contains the values:

$myarray["this"][0] = filename.gif
$myarray["this"][1] = width
$myarray["this"][2] = height
$myarray["this"][3] = type (converted to the file extension.)
$myarray["this"][4] = height=x width=x

This may not be all that impressive to some, but it turned out to be very useful for me, so I thought I'd share, in addition, I think it gives a "very" good example of "a use" for the Key() function.

Frankly, I was quite happy to discover this function, I can't count the number of times I "needed to use the key as a value".

I hope you find this code useful.

<in_arraykrsort>
 Last updated: Thu, 19 May 2005
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: The Server Pages
Last updated: Thu May 19 17:35:34 2005 CDT