Cerca la chiave / indice più alto in un array


92

Come posso ottenere con PHP la chiave / indice più alto in un array? So come farlo per i valori.

Ad esempio, da questo array vorrei ottenere "10" come valore intero:

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

So come potrei programmarlo, ma mi chiedevo se c'era anche una funzione per questo.

Risposte:


205

Questo dovrebbe funzionare bene

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

Sai se funzionerebbe anche se una chiave fosse impostata in questo modo: $ arr = array (1 => "A", 10 => "B", 5 => "C", "15" => "D ");
Raffael Luthiger

2
@Raffael Luthiger prova a testarlo e vedi se ottieni i risultati giusti.
Jonathan Kuhn

1
Questo non gestisce il caso di un array vuoto. Direttamente dal manuale PHP per max:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
Sifone

33

Puoi ottenere la chiave massima in questo modo:

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

Mi dispiace, qualcuno ha postato la stessa risposta prima di me.
Fabrizio D'Ammassa

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

print $keys[0];

dovrebbe stampare "10"


2

Ho avuto una situazione in cui avevo bisogno di ottenere la prossima chiave disponibile in un array, che è il più alto + 1.

Ad esempio, se l'array è $ data = ['1' => 'qualcosa, '34' => 'qualcos'altro'], dovevo calcolare 35 per aggiungere un nuovo elemento all'array che aveva una chiave maggiore di qualsiasi degli altri. Nel caso di un array vuoto, avevo bisogno di 1 come prossima chiave disponibile.

Questa è la soluzione che ha funzionato:

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

Funzionerà in tutti i casi, array vuoto o meno. Se devi solo trovare la chiave più alta anziché la chiave più alta + 1, elimina l'ultima riga. Otterrai quindi un valore di 0 se l'array è vuoto.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.