2012-07-18 102 views
0

我正在尝试在循环中交换显示顺序。
例如,我有一个数组$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

'1,2,3,4,5,6,7,8,9,10'应该输出什么? – Engineer 2012-07-18 18:45:17

+0

是否没有其他可以添加到条目的'排序'字段,即'array(array(1,2),array(2,1),...)'然后你可以使用'usort'来做? – 2012-07-18 18:46:23

+1

您使用什么标准重新排列数组?你总是交换第一和第二元素?如果是这样,为什么不交换数组中的元素? '$ temp = $ array [1]; $ array [1] = $ array [0]; $ array [0] = $ temp;'? – 2012-07-18 18:53:29

回答

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,数组从零开始)的顺序(键)。