105

How can I get the highest key/index in an array with ? I know how to do it for the values.

E.g.: from this array I would like to get 10 as an integer value:

$arr = array(1 => "A", 10 => "B", 5 => "C");

I know how I could code it but I was asking myself if there is a function for this as well.

matiaslauriti
  • 7,065
  • 4
  • 31
  • 43
Raffael Luthiger
  • 2,191
  • 3
  • 19
  • 31

7 Answers7

234

This should work fine

$arr = array( 1 => "A", 10 => "B", 5 => "C" );
max(array_keys($arr));
Gérald Croës
  • 3,799
  • 2
  • 18
  • 20
35

You can get the maximum key this way:

<?php
$arr = array("a"=>"test", "b"=>"ztest");
$max = max(array_keys($arr));
?>
Fabrizio D'Ammassa
  • 4,729
  • 25
  • 32
2

I had a situation where I needed to obtain the next available key in an array, which is the highest + 1.

For example, if the array is $data = ['1' => 'something, '34' => 'something else'], then I needed to calculate 35 to add a new element to the array that had a key higher than any of the others. In the case of an empty array I needed 1 as next available key.

This is the solution that worked:

$highest = 0;
foreach ($data as $idx => $dummy) {
    if ($idx > $highest) $highest = $idx;
}
$highest++;

It will work in all cases, empty array or not. If you only need to find the highest key rather than highest key + 1, delete the last line.

You will then get a value of 0 if the array is empty.

matiaslauriti
  • 7,065
  • 4
  • 31
  • 43
JG Estiot
  • 969
  • 1
  • 10
  • 8
1
$keys = array_keys($arr);
$keys = rsort($keys);

print $keys[0];

should print "10"

Cfreak
  • 19,191
  • 6
  • 49
  • 60
1
function getMaxKey(array $array): ?int
{
    if ($array === []) {
        return null;
    }

    return max(0, ...array_keys($array));
}

assuming you don't have negative keys like int -1

j4r3k
  • 156
  • 5
0

Try max() function, see the first comment on that page.

matiaslauriti
  • 7,065
  • 4
  • 31
  • 43
AllisonC
  • 2,973
  • 4
  • 29
  • 46
-3
$higestKey = 0;
foreach ($data as $key => $value) {
    if (strlen($key) > $higestKey) $higestKey = strlen($key);
}
Umar Alfaruq
  • 507
  • 1
  • 6
  • 8
  • 1
    What has the length of key string to do with the highest key? This also assumes that keys are strings which also isn't true for the data shown in the question. – BDL Jul 19 '21 at 08:49