Movatterモバイル変換


[0]ホーム

URL:


    range »
    « pos

    prev

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

    prevRewind the internal array pointer

    Description

    prev(array|object&$array):mixed

    Rewind the internal array pointer.

    prev() behaves just likenext(), except it rewinds the internal array pointer one place instead of advancing it.

    Parameters

    array

    The input array.

    Return Values

    Returns the array value in the previous place that's pointed to by the internal array pointer, orfalse if there are no more elements.

    Warning

    This function mayreturn Booleanfalse, but may also return a non-Boolean value whichevaluates tofalse. Please read the section onBooleans for moreinformation. Usethe ===operator for testing the return value of thisfunction.

    Changelog

    VersionDescription
    8.1.0 Calling this function onobjects is deprecated. Either convert theobject to anarray usingget_mangled_object_vars() first, or use the methods provided by a class that implementsIterator, such asArrayIterator, instead.
    7.4.0 Instances ofSPL classes are now treated like empty objects that have no properties instead of calling theIterator method with the same name as this function.

    Examples

    Example #1 Example use ofprev() and friends

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

    Notes

    Note: The beginning of an array is indistinguishable from aboolfalse element. To make the distinction, check that thekey() of theprev() element is notnull.

    See Also

    • current() - Return the current element in an array
    • end() - Set the internal pointer of an array to its last element
    • next() - Advance the internal pointer of an array
    • reset() - Set the internal pointer of an array to its first element
    • each() - Return the current key and value pair from an array and advance the array cursor

    Found A Problem?

    Learn How To Improve This PageSubmit a Pull RequestReport a Bug
    add a note

    User Contributed Notes3 notes

    MicroVB INC
    11 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
    functionnearest($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;
    }
    }
    ?>
    soapergem at gmail dot com
    16 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);
    }

    ?>
    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

    functionpreviousElement(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;
    }
    add a note
    To Top
    and to navigate •Enter to select •Esc to close
    PressEnter without selection to search using Google

    [8]ページ先頭

    ©2009-2025 Movatter.jp