数组 函数
在线手册:中文  英文

array_reverse

(PHP 4, PHP 5)

array_reverse 返回一个单元顺序相反的数组

说明

array array_reverse ( array $array [, bool $preserve_keys = false ] )

array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组。

参数

array

输入的数组。

preserve_keys

如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。

返回值

返回反转后的数组。

更新日志

版本 说明
4.0.3 添加了参数 preserve_keys

范例

Example #1 array_reverse() 例子

<?php
$input  
= array("php"4.0, array("green""red"));
$result array_reverse($input);
$result_keyed array_reverse($inputtrue);
?>

这将使 $result$result_keyed 具有相同的单元,但是注意键名的区别。$result$result_keyed 的打印输出显示分别为:

Array
(
    [0] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [2] => php
)
Array
(
    [2] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [0] => php
)

参见


数组 函数
在线手册:中文  英文

用户评论:

atulmvAThotmailDOTcoDOTuk (2012-08-29 11:48:15)

Here are a couple of routines to swap the order of two elements in an array

<?php

function array_swap_forward($arr,$elem)
{
$ndx array_search($elem,$arr) - 1;
$b4 array_slice($arr,0,$ndx);
$mid array_reverse(array_slice($arr,$ndx,2));
$after array_slice($arr,$ndx 2);

return 
array_merge($b4,$mid,$after);
}

function 
array_swap_back($arr,$elem)
{
$ndx array_search($elem,$arr);
$b4 array_slice($arr,0,$ndx);
$mid array_reverse(array_slice($arr,$ndx,2));
$after array_slice($arr,$ndx 2);

return 
array_merge($b4,$mid,$after);
}

$arr =array('a','b','c','d','e','f');
print_r(array_swap_forward($arr,'c'));
echo 
'<br>';
print_r(array_swap_back($arr,'c'));
?>

virtual89 at gmail dot com (2012-07-29 10:35:45)

With array_reverse() if the keys are strings, they remain the same, example:

<?php
$a 
= array ("zero"=>"hello","one"=>"world");
var_dump (array_reverse($a));
?>

Outputs:

array(2) {
["one"]=>
string(5) "world"
["zero"]=>
string(5) "hello"
}

But if the keys are numbers, they will be changed starting from 0, example:

<?php
$a 
= array (10=>"hello",20=>"world");
var_dump (array_reverse($a));
?>

Outputs:

array(2) {
[0]=>
string(5) "world"
[1]=>
string(5) "hello"
}

alfbennett at gmail dot com (2010-04-06 13:41:43)

Needed to just reverse keys. Don't flog me if there is a better way. This was a simple solution.

<?php
function array_reverse_keys($ar){
    return 
array_reverse(array_reverse($ar,true),false);
}
?>

rahulavhad at yahoo dot com (2000-12-29 20:31:09)

This code can help in recursive reversing of the array...

<?php
$arr1 
= array(2,1,array(5,2,1,array(9,8,7)),5,0);
$arr1 array_reverse($arr1);

function 
Reverse_Array($array)
{    
$index 0;
    foreach (
$array as $subarray)
    {    if (
is_array($subarray))
        {    
$subarray array_reverse($subarray);
            
$arr Reverse_Array($subarray);
            
$array[$index] = $arr;
        }
        else {
$array[$index] = $subarray;}
        
$index++;
    }
    return 
$array;
}

$arr2 Reverse_Array($arr1);
?>

david at audiogalaxy dot com (2000-03-04 01:39:02)

As a further clarification: key-value pairs have an order within an array completely separate from whatever the keys happen to be - the order in which you add them. This is the order that functions like each() and next() will move their pointer through the array.
If you add to an array without specifying the key, like $array[] = value; then an internal counter supplies the key value and then the numerical order of your keys will be identical to the the internal order. If you "leave holes" - jumping ahead by specifying a higher number for the key, like $array[1000] = value; the internal counter gets pushed forward appropriately. Other than its effect on this internal counter, specifying a numerical key seems no different than specifying a string.
However, some array functions, like array_merge() and array_reverse() treat keys that are numbers differently from keys that are not.

david at audiogalaxy dot com (2000-03-04 00:40:43)

With associative arrays array_reverse() keeps key => value pairs matched but reverses the order of the array as spaned by functions like each(). With numerical indexes array_reverse not only reverses position (as spaned by each) but also renumbers the keys.
Both cases seem to be what people would generally want: indeed without the renumbering behavior, someone refering to array elements by numerical key wouldn't think array_reverse did anything.
However, people who are trying to keep numerical keys associated with their values - e.g. trying to have holes in their arrays - will be foiled by the renumbering. The most telling results come from applying array_reverse() to arrays with mixed keys (some numbers and some strings). The strings stay attached and the rest of the keys get renumbered around them - most annoying if you are thinking what you've got is an associative array but some of your keys happen to be numbers.

易百教程