(Editor note: Or just use the array_keys function)
Make as simple as possible but not simpler like this one :)
$k = array();
for($i = 0; $i < count($arr); $i++){
$k[$i] = key($arr);
next($arr);
}
(PHP 4, PHP 5, PHP 7, PHP 8)
key — 从关联数组中取得键名
$array
) : int|string|nullkey() 返回数组中当前单元的键名。
array
该数组。
key() 函数返回数组中内部指针指向的当前单元的键名。
但它不会移动指针。如果内部指针超过了元素列表尾部,或者数组是空的,key() 会返回 null
。
版本 | 说明 |
---|---|
7.0.0 |
array 现在总是会传值。
在此之前,它会尽可能传引用,否则就传值。
|
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), "\n";
}
next($array);
}
?>
以上例程会输出:
fruit1<br /> fruit4<br /> fruit5<br />
(Editor note: Or just use the array_keys function)
Make as simple as possible but not simpler like this one :)
$k = array();
for($i = 0; $i < count($arr); $i++){
$k[$i] = key($arr);
next($arr);
}
In addition to FatBat's response, if you'd like to find out the highest key in an array (assoc or not) but don't want to arsort() it, take a look at this:
<?php
$arr = [ '3' => 14, '1' => 15, '4' => 92, '15' => 65 ];
$key_of_max = array_search( max($arr) , $arr);
?>
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.
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
?>
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.
?>