Шукати найвищий ключ / індекс у масиві


92

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

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

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

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

Відповіді:


205

Це має працювати нормально

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

Чи знаєте ви, чи могло б так само працювати, якщо одну клавішу встановити так: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
Raffael Luthiger

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' => 'щось, '34' => 'щось інше'], то мені потрібно було обчислити 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.