Cari kunci / indeks tertinggi dalam sebuah larik


93

Bagaimana saya bisa mendapatkan dengan PHP kunci / indeks tertinggi dalam sebuah array? Saya tahu bagaimana melakukannya untuk nilai-nilai.

Misalnya, dari larik ini saya ingin mendapatkan "10" sebagai nilai integer:

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

Saya tahu bagaimana saya bisa memprogramnya, tetapi saya bertanya pada diri sendiri apakah ada fungsi untuk ini juga.

Jawaban:


207

Ini seharusnya bekerja dengan baik

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

Apakah Anda tahu apakah itu akan bekerja dengan baik jika satu kunci disetel seperti ini: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
Raffael Luthiger

2
@Raffael Luthiger coba mengujinya dan lihat apakah Anda mendapatkan hasil yang tepat.
Jonathan Kuhn

1
Ini tidak menangani kasus array kosong. Langsung dari manual PHP untuk max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
Siphon

33

Anda bisa mendapatkan kunci maksimum dengan cara ini:

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

Maaf, seseorang memposting jawaban yang sama sebelum saya.
Fabrizio D'Ammassa

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

print $keys[0];

harus mencetak "10"


2

Saya mengalami situasi di mana saya perlu mendapatkan kunci yang tersedia berikutnya dalam sebuah array, yang merupakan +1 tertinggi.

Misalnya, jika array adalah $ data = ['1' => 'something, '34' => 'something else'] maka saya perlu menghitung 35 untuk menambahkan elemen baru ke array yang memiliki kunci lebih tinggi dari yang manapun dari yang lain. Dalam kasus array kosong saya membutuhkan 1 sebagai kunci yang tersedia berikutnya.

Ini adalah solusi yang berhasil:

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

Ini akan bekerja di semua kasus, array kosong atau tidak. Jika Anda hanya perlu menemukan kunci tertinggi daripada kunci tertinggi + 1, hapus baris terakhir. Anda kemudian akan mendapatkan nilai 0 jika array kosong.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.