0

ループで表示順序を入れ替えようとしています。
たとえば$array、値を持つ配列が1,2,3,4,5あり、結果を order で表示したいとします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 />';
}

どちらの方法でも、最小限のコードで問題なく動作します。
君たちありがとう!

4

1 に答える 1

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);
}

これは、コメントですでに自分で書いたように、最初の2つの要素の順序(キー)を切り替えることで機能します(0および1、配列はゼロベースです)。

于 2012-07-18T18:54:27.663 に答える