2010-02-04 7 views
8
$arr[] = $new_item; 

È possibile ottenere l'elemento appena premuto a livello di codice?Come ottenere la chiave numerica del nuovo oggetto inserito in PHP?

Si noti che non è necessario count($arr)-1:

$arr[1]=2; 
$arr[] = $new_item; 

Nel caso di cui sopra, è 2

+0

Edit: mi ignorano, ho letto male la domanda. Spinto quale elemento interattivo? Pulsante, pulsante di opzione, caselle di controllo o ...? – Extrakun

+0

Le risposte di Bryan e Haim funzionano entrambe ... tuttavia il più delle volte quando qualcuno fa una domanda come questa non si preoccupa veramente dell'ultima chiave dell'array, vogliono davvero l'ultimo elemento dell'array. Se questo è il caso, basta usare la funzione 'end()' da solo e non preoccuparti della sua chiave. – philfreo

risposta

6

max(array_keys($array)) dovrebbe fare il trucco

9

end() fare il lavoro, per restituire il valore,

se il suo aiuto,

è possibile utilizzare key() dopo aver aperto la chiave.

dopo ho scritto la risposta, vedo la funzione in questo link:

http://www.php.net/manual/en/function.end.php

function endKey($array){ 
end($array); 
return key($array); 
} 
+0

Non penso che funzionerà.Da PHP Docs: "Ogni array ha un puntatore interno al suo elemento 'corrente', che viene inizializzato sul primo elemento inserito nell'array." È possibile che 'end()' possa fare il lavoro – rossipedia

+1

lo aggiusto, hai ragione, la sua fine() –

0

è possibile utilizzare una variabile per tenere traccia del numero di elementi in un array:

$i = 0; 
$foo = array(); 
$foo[++$i] = "hello"; 
$foo[++$i] = "world"; 

echo "Elements in array: $i" . PHP_EOL; 
echo var_dump($foo); 
+0

Questo sovrascriverà le chiavi esistenti, e se non ce n'è nessuna offre alcun vantaggio sull'uso di '$ foo []', a parte creare un array basato su uno (che può o non può essere un vantaggio). – Duncan

1

Si può provare:

max(array_keys($array,$new_item)) 

array_keys($array,$new_item) restituirà tutte le chiavi associate al valore $new_item, come una matrice.

Di tutte queste chiavi ci interessa quella che è stata aggiunta per ultima e avrà il valore max.

+0

buona chiamata sul '$ new_item' lì, grazie)) –

0

se è appena creato, è consigliabile conservare un riferimento all'elemento. :)

Si potrebbe usare array_reverse, in questo modo:

$arr[] = $new_item; 
... 
$temp = array_reverse($arr); 
$new_item = $temp[0]; 

Oppure si potrebbe fare questo:

$arr[] = $new_item; 
... 
$new_item = array_pop($arr); 
$arr[] = $new_item; 

Se si utilizza l'array come una pila, che sembra che sei , dovresti evitare di mescolare le chiavi associative. Questo include l'impostazione $arr[$n] dove $n > count($arr). Attenersi all'utilizzo delle funzioni array_* per la manipolazione e, se è necessario utilizzare gli indici, farlo solo se 0 < $n < count($arr). In questo modo, gli indici dovrebbero rimanere ordinati e sequenziali e quindi è possibile fare affidamento su $arr[count($arr)-1] per correggere (se non lo è, si ha un errore logico).

2

Il modo più sicuro per farlo è:

$newKey = array_push($array, $newItem) - 1; 
+0

Sembra che funzionerà. Ma non "sente" giusto. Mi sto perdendo qualcosa qui? – Achshar

+0

È il più pulito che ho inventato finora. –

Problemi correlati