key

(PHP 4, PHP 5)

keyВыбирает ключ из массива

Описание

mixed key ( array &$array )

key() возвращает индекс текущего элемента массива.

Список параметров

array

Массив.

Возвращаемые значения

Функция key() просто возвращает ключ того элемента массива, на который в данный момент указывает внутренний указатель массива. Он не сдвигает указатель ни в каком направлении. Если внутренний указатель указывает вне границ массива или массив пуст, key() возвратит NULL.

Примеры

Пример #1 Пример использования key()

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

// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны "apple"
while ($fruit_name current($array)) {
    if (
$fruit_name == 'apple') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

Результат выполнения данного примера:

fruit1<br />
fruit4<br />
fruit5<br />

Смотрите также

  • current() - Возвращает текущий элемент массива
  • next() - Передвигает внутренний указатель массива на одну позицию вперёд

Коментарии

Автор:
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.
?>
2011-10-17 15:20:49
http://php5.kiev.ua/manual/ru/function.key.html
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
?>
2013-10-23 14:43:31
http://php5.kiev.ua/manual/ru/function.key.html
Автор:
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 errorbut felt it might help someone else out there.
2014-04-23 19:05:14
http://php5.kiev.ua/manual/ru/function.key.html
If you want to return the key on an associative array to get the first occurence of this array for exemple and if you don't know the key of the element that you search, it's impossible to find it without create you're own fonction, you can use for example : 

/**
     * Retourne la premiére clé/valeur d'un tableau (notament utile pour les tableaux associatifs)
     * @param array $tab un tableau
     * @param int $mode 0 => renvoie la premiére valeur du tableau, 1=> renvoie la premiére clé du tableau
     * @return mixed la premiére occurence d'un tableau
     */
    public static function firstKey($tab,$mode = 0)
    {
        foreach($tab as $key=>$values)
        {
            if(is_array($values))
            {
                self::firstKey($values);
            }
            if($mode == 0)
            {
                return $values;
            }
            elseif($mode == 1)
            {
                return $key;           
            }
        }
        return null;
    }
2016-09-29 01:13:15
http://php5.kiev.ua/manual/ru/function.key.html
Why is the argument passed as reference, if the function does not change anything on it.
2017-06-16 19:50:03
http://php5.kiev.ua/manual/ru/function.key.html

    Поддержать сайт на родительском проекте КГБ