<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.array.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'en',
  ),
  'this' => 
  array (
    0 => 'function.key.php',
    1 => 'key',
    2 => 'Fetch a key from an array',
  ),
  'up' => 
  array (
    0 => 'ref.array.php',
    1 => 'Array Functions',
  ),
  'prev' => 
  array (
    0 => 'function.in-array.php',
    1 => 'in_array',
  ),
  'next' => 
  array (
    0 => 'function.key-exists.php',
    1 => 'key_exists',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'reference/array/functions/key.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.key" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">key</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">key</span> &mdash; <span class="dc-title">Fetch a key from an array</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.key-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>key</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.object.php" class="type object">object</a></span></span> <code class="parameter">$array</code></span>): <span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.null.php" class="type null">null</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>key()</strong></span> returns the index element of the current array
   position.
  </p>
 </div>

 <div class="refsect1 parameters" id="refsect1-function.key-parameters">
  <h3 class="title">Parameters</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">array</code></dt>
     <dd>
      <p class="para">
       The array.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.key-returnvalues">
  <h3 class="title">Return Values</h3>
  <p class="para">
   The <span class="function"><strong>key()</strong></span> function simply returns the
   key of the array element that&#039;s currently being pointed to by the
   internal pointer.  It does not move the pointer in any way.  If the
   internal pointer points beyond the end of the elements list or the array is 
   empty, <span class="function"><strong>key()</strong></span> returns <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.key-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
 <td>8.1.0</td>
 <td>
  Calling this function on <span class="type"><a href="language.types.object.php" class="type object">object</a></span>s is deprecated.
  Either convert the <span class="type"><a href="language.types.object.php" class="type object">object</a></span> to an <span class="type"><a href="language.types.array.php" class="type array">array</a></span> using <span class="function"><a href="function.get-mangled-object-vars.php" class="function">get_mangled_object_vars()</a></span> first, or use the methods
  provided by a class that implements <span class="interfacename"><a href="class.iterator.php" class="interfacename">Iterator</a></span>, such as <span class="classname"><a href="class.arrayiterator.php" class="classname">ArrayIterator</a></span>, instead.
 </td>
</tr>

<tr>
 <td>7.4.0</td>
 <td>
  Instances of <a href="book.spl.php" class="link">SPL</a> classes are now treated like empty objects that have no properties instead of calling the <span class="interfacename"><a href="class.iterator.php" class="interfacename">Iterator</a></span> method with the same name as this function.
 </td>
</tr>


    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.key-examples">
  <h3 class="title">Examples</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Example #1 <span class="function"><strong>key()</strong></span> example</strong></p>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$array </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">'fruit1' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'fruit2' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'orange'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'fruit3' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'grape'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'fruit4' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'fruit5' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// this cycle echoes all associative array<br />// key where value equals "apple"<br /></span><span style="color: #007700">while (</span><span style="color: #0000BB">$fruit_name </span><span style="color: #007700">= </span><span style="color: #0000BB">current</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">)) {<br />    if (</span><span style="color: #0000BB">$fruit_name </span><span style="color: #007700">== </span><span style="color: #DD0000">'apple'</span><span style="color: #007700">) {<br />        echo </span><span style="color: #0000BB">key</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    }<br />    </span><span style="color: #0000BB">next</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>The above example will output:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">fruit1
fruit4
fruit5</pre>
</div>
    </div>
   </div>
  </p>
 </div>

 <div class="refsect1 seealso" id="refsect1-function.key-seealso">
  <h3 class="title">See Also</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.current.php" class="function" rel="rdfs-seeAlso">current()</a> - Return the current element in an array</span></li>
    <li><span class="function"><a href="function.next.php" class="function" rel="rdfs-seeAlso">next()</a> - Advance the internal pointer of an array</span></li>
    <li><span class="function"><a href="function.array-key-first.php" class="function" rel="rdfs-seeAlso">array_key_first()</a> - Gets the first key of an array</span></li>
    <li><a href="control-structures.foreach.php" class="link">foreach</a></li>
   </ul>
  </p>
 </div>

</div><?php manual_footer($setup); ?>