International PHP Conference 2015

key

(PHP 4, PHP 5)

keyLiefert einen Schlüssel eines Arrays

Beschreibung

mixed key ( array &$array )

key() liefert das Index Element der aktuellen Position im Array.

Parameter-Liste

array

Das Array.

Rückgabewerte

Die key() Funktion gibt einfach den Schlüssel des Arrayelements zurück, auf das momentan durch den internen Zeiger gezeigt wird. Sie bewegt den Zeiger in keiner Weise. Zeigt der interne Zeiger über das Ende der Elementliste hinaus oder ist das Array leer, gibt key() NULL zurück.

Beispiele

Beispiel #1 key() Beispiel

<?php
$array 
= array(
    
'Frucht1' => 'Apfel',
    
'Frucht2' => 'Orange',
    
'Frucht3' => 'Traube',
    
'Frucht4' => 'Apfel',
    
'Frucht5' => 'Apfel');

// Diese Schleife gibt alle Schlüssel des assoziativen 
// Arrays aus, deren Wert "Apfel" ist.
while ($fruit_name current($array)) {
    if (
$fruit_name == 'Apfel') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Frucht1<br />
Frucht4<br />
Frucht5<br />

Siehe auch

  • current() - Liefert das aktuelle Element eines Arrays
  • next() - Rückt den internen Zeiger eines Arrays vor

add a note add a note

User Contributed Notes 8 notes

up
68
lhardie
1 year 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
41
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
14
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
1
art
10 months ago
Returns "Warning" message if given parameter is not an array.
up
-14
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
-9
Anonymous
9 months ago
<?php
function generarCodigo($longitud) {
$key = '';
$pattern = '123456789ASKKDOQEMANDOASJDSO';
$max = strlen($pattern)-1;
for(
$i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
return
$key;
}
 


echo
generarCodigo(4)
echo
"-";
echo
generarCodigo(4);
echo
"-";
echo
generarCodigo(4);
echo
"-";
echo
generarCodigo(4);
?>
up
-20
goker.cebeci
3 years ago
object usage:

<?php

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

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

?>
up
-21
michael
6 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