Question 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 en PHP5?


40
2018-02-03 18:28


origine


Réponses:


$array[count($array)-2]

Ce devrait être un tableau indexé numériquement (à partir de zéro). Vous devez avoir au moins 2 éléments pour que cela fonctionne. (évidemment)


61
2018-02-03 18:30



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 cela échouera.


113
2018-02-03 18:32



array_slice prend un offset négatif comme second argument. Cela vous donnera un tableau contenant le second élément:

$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);

Si vous voulez simplement que la valeur unique soit la vôtre, vous avez plusieurs options. Si cela ne vous dérange pas d'utiliser une variable intermédiaire, vous pouvez simplement obtenir la première valeur avec [0] ou appeler array_pop ou array_shift.

Ou vous pouvez simplement utiliser array_sum ou array_product, qui est un peu pirate mais fonctionne bien pour les tableaux à un seul élément.


15
2018-02-03 18:55



Quant à moi une solution minuscule

end($array);
echo prev($array);

12
2018-01-06 12:20



Une méthode qui fonctionnera pour les deux associatif tableau et tableau numérique est à utiliser array_pop() pour faire sortir l'élément de la fin du tableau.

$last = array_pop($array);
$second_last = array_pop($array);

// put back the last
array_push($array, $last);

6
2018-02-03 18:35



// 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];

2
2018-01-07 12:24



Tous les tableaux ont un "pointeur de tableau interne" qui pointe vers l'élément de tableau actuel, PHP a plusieurs fonctions qui vous permettent de naviguer dans le tableau et de voir la clé et la valeur des éléments actuels.

  • end() - Définit le pointeur interne d'un tableau sur son dernier élément
  • reset() - Définit le pointeur interne d'un tableau sur son premier élément
  • prev() - Rembobiner le pointeur de tableau interne
  • next() - Avance le pointeur de tableau interne d'un tableau
  • current() - Retourne l'élément actuel dans un tableau
  • key() - Récupère une clé dans un tableau
  • each() - Retourne la clé actuelle et la paire de valeurs d'un tableau et avance le curseur du tableau

Ces fonctions fonctionnent si le tableau est vide, séquentiel ou associatif et comme un tableau n'a pas été spécifié dans l'exemple, je suppose qu'il 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 voir le résultat attendu (false) et le résultat pour un élément inexistant est le même (FALSE) de sorte que vous ne pouvez pas vérifier si un élément existe en utilisant la valeur d'élément retournée, une clé d'élément est différente.

La clé peut être soit un entier ou un chaîne. La valeur peut être de tout type. la source 

le key() renvoie la valeur de la clé en cours si l'élément existe, sinon il retournera NULL. Une clé valide ne peut jamais être NULL, donc si null est renvoyé, nous pouvons déterminer que l'élément n'existe pas.


2
2018-05-18 10:12