文字

key

(PHP 4, PHP 5, PHP 7)

key从关联数组中取得键名

说明

mixed key ( array &$array )

key() 返回数组中当前单元的键名。

参数

array

该数组。

返回值

key() 函数返回数组中内部指针指向的当前单元的键名。 但它不会移动指针。如果内部指针超过了元素列表尾部,或者数组是空的, key() 会返回 NULL

范例

Example #1 key() 例子

<?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 );
}
?>

以上例程会输出:

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

参见

  • current() - 返回数组中的当前单元
  • next() - 将数组中的内部指针向前移动一位

用户评论:

[#1] Anonymous [2014-11-26 21:14:16]

<?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); 
?>

[#2] art [2014-10-08 08:50:45]

Returns "Warning" message if given parameter is not an array.

[#3] lhardie [2014-04-23 16:05:14]

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.

[#4] vinob44 at gmail dot com [2013-10-23 11:43:31]

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
?>

[#5] goker.cebeci [2012-02-23 19:41:04]

object usage:

<?php

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

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

?>

[#6] FatBat [2011-10-17 12:20:49]

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.
?>

[#7] michael [2008-12-09 11:19:37]

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$pos1true);
    return 
key($temp);
}
?>


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

[#8] yarco dot w at gmail dot com [2007-09-13 01:45:42]

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'];
?>

上一篇: 下一篇: