2012-07-18 108 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,數組從零開始)的順序(鍵)。