prev

(PHP 4, PHP 5, PHP 7, PHP 8)

prevRecule le pointeur courant de tableau

Description

prev(array|object &$array): mixed

Recule le pointeur courant de tableau.

prev() se comporte exactement comme next(), mais elle fait reculer le pointeur plutôt que de l'avancer.

Liste de paramètres

array

Le tableau d'entrée.

Valeurs de retour

Retourne la valeur précédente du tableau suivant le pointeur interne du tableau, ou false s'il n'y a plus d'élément.

Avertissement

Cette fonction peut retourner false, mais elle peut aussi retourner une valeur équivalent à false. Veuillez lire la section sur les booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction.

Historique

Version Description
8.1.0 Soit convertir l'objet en un tableau en utilisant get_mangled_object_vars() d'abord, ou utiliser les méthodes fournies par une classe qui implémente Iterator, telle que ArrayIterator.
7.4.0 À partir de PHP 7.4.0, les instances de classes SPL sont traitées comme des objets vides sans propriétés au lieu d'appeler la méthode Iterator avec le même nom que cette fonction.

Exemples

Exemple #1 Exemple avec prev()

<?php
$transport
= array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = next($transport); // $mode = 'car';
$mode = prev($transport); // $mode = 'bike';
$mode = end($transport); // $mode = 'plane';
?>

Notes

Note: Il n'est pas possible de distinguer le début d'un tableau de l'élément bool false. Pour faire la distinction, vérifiez si la key() de l'élément prev() n'est pas null.

Voir aussi

  • current() - Retourne l'élément courant du tableau
  • end() - Positionne le pointeur de tableau en fin de tableau
  • next() - Avance le pointeur interne d'un tableau
  • reset() - Remet le pointeur interne de tableau au début
  • each() - Retourne chaque paire clé/valeur d'un tableau

add a note

User Contributed Notes 3 notes

up
0
MicroVB INC
10 years ago
This function searches for the closest element in an array by key value, and returns the key/value pair, or false if not found.

<?php
function nearest($array, $value, $exact=false) {
// Initialize Variables
$next = false;
$prev = false;
$return = false;

if(!isset(
$array[$value]) && !$exact) {
// Insert element that doesn't exist so nearest can be found
$array[$value] = '-';
}

if(
$exact && isset($array[$value])) {
// If exact match found, and searching for exact (not nearest), return result.
$return = Array($value=>$array[$value]);
} else {
// Sort array so injected record is near relative numerics
ksort($array); // Sort array on key

// Loop through array until match is found, then set $prev and $next to the respective keys if exist
while ( !is_null($key = key($array)) ) {
$val = current($array);
if(
$key == $value) {
prev($array); // Get entry before this one
$prev = key($array);
next($array); // Skip current entry as this was what we were looking for nearest to
next($array); // Get entry after this one
$next = key($array);
break;
}
next($array);
}

if(
$prev && $next) {
if((
$long - $prev) > ($next - $long)) {
// Previous is closer
$return = Array($prev=>$array[$prev]);
} else {
// Next is closer
$return = Array($next=>$array[$next]);
}
} elseif (
$prev || $next) {
if(
$prev) {
// Only Previous exists
$return = Array($prev=>$array[$prev]);
} elseif (
$next) {
// Only Next exists
$return = Array($next=>$array[$next]);
}
}
}

// Return resulting Array(). $return is false if nothing matches the closest conditions, or if exact is specified and key does not exist.
return $return;
}
?>

Example usage (to lookup the closest color in an array)
<?php
$mycolors
= Array(
5001046=>'Abbey',
1774596=>'Acadia',
8171681=>'Acapulco',
6970651=>'Acorn',
13238245=>'Aero Blue',
7423635=>'Affair',
8803850=>'Afghan Tan',
13943976=>'Akaroa',
16777215=>'Alabaster',
16116179=>'Albescent White',
10176259=>'Alert Tan',
30371=>'Allports'
);

// Color to search for in Hex
$color = 'C0C0C0';

// Convert Hex to Long to compare with array() keys
$colorlong = base_convert($color,16,10);

// Check for an exact match
$result = nearest($mycolors, $colorlong, true);
if(
$result) {
echo
"An exact match was found for #" . $color . " which is called '" . $result[key($result)] . "'";
} else {
echo
"No exact match was found";
}

if(!
$result) {
// Check for closest match
$result = nearest($mycolors, $colorlong, true);
if(
$result) {
// Match found
echo "The closest match for #" . $color . " is #" . base_convert(key($result),10,16) . " which is called '" . $result[key($result)] . "'";
} else {
// No match found
echo "No match was found for #" . $color;
}
}
?>
up
-1
soapergem at gmail dot com
15 years ago
Here's a slight revision to xmlich02's backwards iteration example. The problem with his/her example is that it will halt if any of the array elements are boolean false, while this version will not.

<?php

end
($ar);
while ( !
is_null($key = key($ar)) ) {
$val = current($ar);
echo
"{$key} => {$val}\n";
prev($ar);
}

?>
up
-2
Mikhail
5 years ago
Function to get element in array, that goes previous your key or false if it not exeists or key doesn't isset in array.

<?php

function previousElement(array $array, $currentKey)
{
if (!isset(
$array[$currentKey])) {
return
false;
}
end($array);
do {
$key = array_search(current($array), $array);
$previousElement = prev($array);
}
while (
$key != $currentKey);

return
$previousElement;
}
To Top