key

(PHP 4, PHP 5)

keyEstrae la chiave corrente da un array associativo

Descrizione

mixed key ( array &$array )

key() restituisce la chiave corrispondente all'attuale posizione del puntatore interno all'array.

Elenco dei parametri

array

L'array.

Valori restituiti

La funzione key() restituisce la chiave dell'elemento dell'array che è attualmente indicato dal puntatore interno. Non modifica il puntatore. Se il puntatore punta oltre la fine della lista degli elementi, oppure se l'array è vuoto, key() restituisce NULL.

Esempi

Example #1 esempio di key()

<?php
$array 
= array(
    
'frutto1' => 'mela',
    
'frutto2' => 'arancia',
    
'frutto3' => 'uva',
    
'frutto4' => 'mela',
    
'frutto5' => 'mela');

// questo ciclo mostra tutte le chiavi
// dell'array associativo che sono uguali a 'mela'
while ($nome_frutto current($array)( {
    if (
$nome_frutto == 'mela') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

Il precedente esempio visualizzerà:

frutto1<br />
frutto4<br />
frutto5<br />

Vedere anche:

  • current() - Restituisce l'elemento corrente di un array
  • next() - Incrementa il puntatore interno dell'array

add a note add a note

User Contributed Notes 7 notes

up
27
vinob44 at gmail dot com
1 year ago
Suppose if the array values are in numbers and numbers contains `0` then the loop will be terminated. To overcome this you can user like this

<?php
$array
= array(
   
'0' => '5',
   
'1' => '2',
   
'2' => '0',
   
'3' => '3',
   
'4' => '1');

// wrong approach

while ($fruit_name = current($array)) {

        echo
key($array).'<br />';
      
next($array);
}

// the way will be break loop when arra('2'=>0) because its value is '0', while(0) will terminate the loop

// correct approach
while ( ($fruit_name = current($array)) !== FALSE ) {

        echo
key($array).'<br />';
      
next($array);
}
//this will work properly
?>
up
21
lhardie
6 months ago
Note that using key($array) in a foreach loop may have unexpected results. 

When requiring the key inside a foreach loop, you should use:
foreach($array as $key => $value)

I was incorrectly using:
<?php
foreach($array as $value)
{
 
$mykey = key($array);
}
?>

and experiencing errors (the pointer of the array is already moved to the next item, so instead of getting the key for $value, you will get the key to the next value in the array)

CORRECT:
<?php
foreach($array as $key => $value)
{
 
$mykey = $key;
}

A noob error, but felt it might help someone else out there.
up
13
FatBat
3 years ago
Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.

<?php
reset
($x);   // optional.
arsort($x);
$key_of_max = key($x);   // returns the index.
?>
up
0
art
17 days ago
Returns "Warning" message if given parameter is not an array.
up
-7
yarco dot w at gmail dot com
7 years ago
Re: br_joris[at]hotmail[doth]com

Do you really mean you want 2 keys point to 1 value?
What you've written seems you want 1 key point to 2 values.

But if you really want 2 keys point to 1 value, you could do the following:

<?php
$buf
['key1'] = 'abc';
$buf['key2'] = & $buf['key1'];
?>
up
-11
goker.cebeci
2 years ago
object usage:

<?php

$object
= new stdClass();
$object->child->key = 'value';

echo
key((array) $object->child);
// key

?>
up
-15
michael
5 years ago
Here is an improved version of the KeyName function below. It is simpler and faster, especially on large arrays as it runs in O(1) instead of O(n).

<?php
function KeyName(array $a, $pos) {
   
$temp = array_slice($a, $pos, 1, true);
    return
key($temp);
}
?>

Also, KeyName($a, -1) will return the last key, etc.
To Top