ค้นหาคีย์ / ดัชนีสูงสุดในอาร์เรย์


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 ");
Raffael Luthiger

2
@Raffael Luthiger ลองทดสอบดูว่าคุณได้ผลลัพธ์ที่ถูกต้องหรือไม่
Jonathan Kuhn

1
สิ่งนี้ไม่ได้จัดการกรณีของอาร์เรย์ว่างเปล่า ตรงจากคู่มือ PHP สำหรับmax:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
กาลักน้ำ

33

คุณสามารถรับคีย์สูงสุดได้ด้วยวิธีนี้:

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

ฉันขอโทษมีคนโพสต์คำตอบเดียวกันต่อหน้าฉัน
Fabrizio D'Ammassa


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 หากอาร์เรย์ว่างเปล่า


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.