prev

(PHP 4, PHP 5)

prev — Передвинуть внутренний указатель массива на одну позицию назад

Описание

mixed prev ( array &$array )

Возвращает значение элемента массива, находящегося на позиции, предыдущей по отношению к позиции, в которой находится его внутренний указатель или FALSE, если достигнут конец массива.

Внимание

Если массив содержит пустые или равные 0 элементы, функция возвратит FALSE для этих элементов. Для того, чтобы правильно просматривать массивы, содержащие пустые элементы, используйте функцию each().

prev() ведёт себя подобно next(), за исключением того, что она передвигает внутренний указатель массива на одну позицию назад, а не вперёд.

Пример #1 Пример использования 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';
?>

См. также current(), end(), next() и reset().

Коментарии

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);
}

?>
2009-05-29 15:06:28
http://php5.kiev.ua/manual/ru/function.prev.html
Автор:
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$colorlongtrue);
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$colorlongtrue);
    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;
    } 
}
?>
2014-03-31 04:17:54
http://php5.kiev.ua/manual/ru/function.prev.html
Автор:
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;
}
2019-09-05 17:56:14
http://php5.kiev.ua/manual/ru/function.prev.html

    Поддержать сайт на родительском проекте КГБ