Поиск наивысшего ключа / индекса в массиве


93

Как я могу получить с помощью PHP самый высокий ключ / индекс в массиве? Я знаю, как это сделать ради ценностей.

Например, из этого массива я хотел бы получить "10" как целое число:

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

Я знаю, как я могу его запрограммировать, но я спрашивал себя, есть ли функция для этого.

Ответы:


207

Это должно работать нормально

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

Знаете ли вы, будет ли это работать, если один ключ установлен следующим образом: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
Рафаэль Лютигер

2
@Raffael Luthiger попробуйте протестировать его и посмотрите, получите ли вы правильные результаты.
Джонатан Кун

1
Это не касается случая пустого массива. Прямо из PHP руководства max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
сифон


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

print $keys[0];

должен напечатать "10"


2

У меня была ситуация, когда мне нужно было получить следующий доступный ключ в массиве, который является максимальным + 1.

Например, если массив равен $ data = ['1' => 'something, '34' => 'something else'], то мне нужно было вычислить 35, чтобы добавить новый элемент в массив, у которого был ключ выше любого из других. В случае пустого массива мне понадобилась 1 в качестве следующего доступного ключа.

Это решение, которое сработало:

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

Он будет работать во всех случаях, пустой массив или нет. Если вам нужно найти только самый высокий ключ, а не самый высокий ключ + 1, удалите последнюю строку. Затем вы получите значение 0, если массив пуст.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.