在循环中交换显示顺序

时间:2012-07-18 18:42:31

标签: php

我试图在循环中交换显示顺序 例如,我有一个数组$array,其值为1,2,3,4,5,并希望以2,1,3,4,5的顺序显示结果。 我正在使用以下代码,并且对我有用:

<?php
$array = array(
    1,
    2,
    3,
    4,
    5,
);
$tempArray = array();
$count = 1;
foreach($array as $key => $value){
    $tempArray[$key] = $value;
    if(in_array($count, array(1, 2))){
        if($count == 2){
            echo $tempArray[1] . '<br />';
            echo $tempArray[0] . '<br />';
        }
    }else{
        echo $value . '<br />';
    }
    $count++;
}

但我想知道是否有任何有效(更好)的方法呢?

修改

$array = array(
    1,
    2,
    3,
    4,
    5,
);
//Either
/*$temp = $array[1];
$array[1] = $array[0];
$array[0] = $temp;*/

//OR
list($array[1], $array[0]) = array($array[0], $array[1]);

foreach($array as $key => $value){
    echo $value . '<br />';
}

无论哪种方式都可以使用最少的代码。
谢谢你们!

1 个答案:

答案 0 :(得分:1)

要更改$array array(1, 2, 3, 4, 5)的显示顺序而不更改$array中元素的顺序,您需要定义显示顺序,然后根据显示顺序显示:

$array   = array(1, 2, 3, 4, 5);

$display = array_keys($array);
list($display[1], $display[0]) = array($display[0], $display[1]);

foreach ($display as $key)
{
    $value = $array[$key];
    printf("%d<br />\n", $value);
}

这是有效的 - 正如你在评论中写的那样 - 通过切换前两个元素(01的顺序(键),数组从零开始。