PHP - comment obtenir l'élément avant le dernier élément d'un tableau?
Comment puis-je obtenir L'élément avant le dernier élément d'un tableau dans PHP5 ?
7 réponses
$array[count($array)-2]
Il doit être un tableau indexé numériquement (à partir de zéro). Vous devez avoir au moins deux éléments pour que cela fonctionne. (bien évidemment)
cela fonctionnera même sur ce tableau:
$array[0] = "hello";
$array[5] = "how";
$array[9] = "are";
end($array);
echo prev($array); // will print "how"
les autres solutions utilisant count () supposent que les index de votre tableau vont dans l'ordre; en utilisant end et prev pour déplacer le pointeur du tableau, vous obtenez les valeurs réelles. Essayez d'utiliser la méthode count () sur le tableau ci-dessus et elle échouera.
array_slice prend un offset négatif comme second argument. Cela vous donnera un unique élément de tableau contenant l'avant-dernier élément:
$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);
Si vous voulez juste la seule valeur propre, vous avez plusieurs options. Si cela ne vous dérange pas d'utiliser une variable intermédiaire, vous pouvez alors juste obtenir la première valeur avec [0] ou appeler array_pop ou array_shift, ils ont tous les deux besoin d'une variable passée par référence ou vous obtiendrez des avertissements en mode strict.
Ou vous pouvez simplement utiliser array_sum ou array_product, qui est un peu hacky mais fonctionne très bien pour les tableaux à un seul élément.
en ce qui me concerne solution assez minuscule
end($array);
echo prev($array);
une méthode qui fonctionnera pour les deux associatif tableau et tableau numérique est d'utiliser array_pop()
pour faire apparaître l'élément à la fin du tableau.
$last = array_pop($array);
$second_last = array_pop($array);
// put back the last
array_push($array, $last);
// Indexed based array
$test = array('a','b','c','d','e');
$count = count($test);
print $test[$count-2];
// Associative Array
$months = array(
'jan'=>'January',
'feb' => 'february',
'mar' => 'March',
'apr' => 'April'
);
$keys = array_keys($months);
$count = count($keys);
print $keys[$count-2];
Tous les tableaux ont un "interne pointeur sur le tableau" qui pointe vers l'élément courant array, PHP a plusieurs fonctions qui vous permettent de naviguer à travers le tableau et de voir la clé et la valeur des éléments courants.
end()
- Définir le pointeur interne d'un tableau de son dernier élémentreset()
- Définir le pointeur interne d'un tableau de son premier élémentprev()
- Rembobinez le pointeur interne du tableaunext()
- avancez le pointeur de tableau interne d'un tableaucurrent()
- retourne l'élément courant dans un tableaukey()
- récupère une clé à partir d'un tableaueach()
- renvoie la clé courante et la paire de valeurs d'un tableau et avance le curseur du tableau
ces fonctions fonctionnent si le tableau est vide, séquentielle ou associatif et comme un tableau n'a pas été spécifié dans l'exemple que j'ai supposé que cela doit fonctionner avec n'importe quel tableau.
$array = array(
'before_last' => false,
'last' => false,
);
end($array); /*
- set pointer to last element -> $array['last']
- return new current element value if it exists, -> false
- else return FALSE
*/
prev($array); /*
- set pointer one place before current pointer -> $array['before_last']
- return new current element value if it exists, -> false
- else return FALSE
*/
if(!is_null(key($array)){ /*
- return current element key if it exists -> "before_last"
- else return NULL
*/
$before_last_element_value = current($array); /*
- return current element value if it exists, -> false
- else return FALSE
*/
}
Comme vous pouvez le voir, le résultat attendu (false
) et le résultat pour un élément inexistant est le même (FALSE
) donc vous ne pouvez pas vérifier si un élément existe en utilisant la valeur de l'élément retourné, une clé d'élément est différente.
la clé peut être un entier et chaîne. Valeur peut être de n'importe quel
type
. source
key()
renvoie la valeur de la clé courante si l'élément existe autrement il retournera NULL.
Une clé valide ne peut jamais être NULLE si la valeur null est retourné, nous pouvons déterminer que l'élément n'existe pas.