Search for highest key/index in an array

PhpArraysKeyHighest

Php Problem Overview


How can I get the highest key/index in an array with [tag:PHP]? 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.

Php Solutions


Solution 1 - Php

This should work fine

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

Solution 2 - Php

You can get the maximum key this way:

<?php
$arr = array("a"=>"test", "b"=>"ztest");
$max = max(array_keys($arr));
?>

Solution 3 - Php

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.

Solution 4 - Php

$keys = array_keys($arr);
$keys = rsort($keys);

print $keys[0];

should print "10"

Solution 5 - Php

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

Solution 6 - Php

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

Solution 7 - Php

$higestKey = 0;
foreach ($data as $key => $value) {
    if (strlen($key) > $higestKey) $higestKey = strlen($key);
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRaffael LuthigerView Question on Stackoverflow
Solution 1 - PhpGérald CroësView Answer on Stackoverflow
Solution 2 - PhpFabrizio D'AmmassaView Answer on Stackoverflow
Solution 3 - PhpJG EstiotView Answer on Stackoverflow
Solution 4 - PhpCfreakView Answer on Stackoverflow
Solution 5 - Phpj4r3kView Answer on Stackoverflow
Solution 6 - PhpAllisonCView Answer on Stackoverflow
Solution 7 - PhpUmar AlfaruqView Answer on Stackoverflow