La fonction array_pop
permet d'extraire le dernier élément d'un tableau tandis que array_shift
permet d'extraire le premier élément d'un tableau.
La finalité de ces fonctions est similaire mais il faut prêter attention aux performances car array_shift
doit recalculer les index, ce qui n'est pas le cas de array_pop
.
Pour un tableau de petite taille, la différence est imperceptible mais quand sa taille augmente, cette différence se fait bien sentir.
En effet, la complexité de array_pop
est de O(1)
tandis que celle de array_shift
est de O(n)
.
Voici un exemple pour s'en convaincre :
<?php $shift = array_fill(0, 1000000, uniqid()); $pop = $shift; echo 'array_shift processing: '; $shiftStart = microtime(true); while (null !== array_shift($shift)) { } echo (microtime(true) - $shiftStart), PHP_EOL, 'array_pop processing: '; $popStart = microtime(true); while (null !== array_pop($pop)) { } echo (microtime(true) - $popStart), PHP_EOL;