1

私は学年の配列を持っています:

$arrayAcademicYears = array( 
           array("8889", "1988-1989"),
           array("8990", "1989-1990"),
           array("9091", "1990-1991"),
           array("0405", "2004-2005"),
           array("1112", "2011-2012"),
           array("1213", "2012-2013")
         );
         foreach($arrayAcademicYears as $k => $v) {
             echo "KEY: ";
             echo $v[0];
             echo " -> VALUE: ";
             echo $v[1];
             echo "<br>";
         }

これは以下を出力します:

KEY: 8889 -> VALUE: 1988-1989
KEY: 8990 -> VALUE: 1989-1990
KEY: 9091 -> VALUE: 1990-1991
KEY: 0405 -> VALUE: 2004-2005
KEY: 1112 -> VALUE: 2011-2012
KEY: 1213 -> VALUE: 2012-2013

次に、次のような変数に現在の学年があります。

$currentAcademicYear="1112";

コードを変更して印刷するにはどうすればよいですか。

KEY: 1112 -> VALUE: 2011-2012
KEY: 1213 -> VALUE: 2012-2013
KEY: 0405 -> VALUE: 2004-2005
KEY: 9091 -> VALUE: 1990-1991
KEY: 8990 -> VALUE: 1989-1990
KEY: 8889 -> VALUE: 1988-1989

これは単なる例であることに注意してください。私は、あらゆる種類のアカデミックコースの演習に対する解決策を求めているわけではありません. ここでは独学で PHP を学習しています。

どうもありがとう!(..私がより良いPHPプログラマーになるのを手伝ってくれて:))

4

2 に答える 2

0

学びたいので、次のように1つの配列のみを使用して、より簡単なロジックを使用することをお勧めします。

// Creating an array with associative keys
$arrayAcademicYears = array( 
    "8889" => "1988-1989",
    "8990" => "1989-1990",
    "9091" => "1990-1991",
    "0405" => "2004-2005",
    "1112" => "2011-2012",
    "1213" => "2012-2013"
    );

// Defining the current year
$currentAcademicYear = "1112";

// Printing the key and content of the current year
echo "KEY: " . $currentAcademicYear . " -> VALUE: " . $arrayAcademicYears[$currentAcademicYear] . "<br />";

// Removing from array the key printed above
unset($arrayAcademicYears[$currentAcademicYear]);

// Getting a reverse array, preserving the keys using the "true" parameter
$arrayAcademicYears = array_reverse($arrayAcademicYears, true);

// Now printing the other keys and its contents, following your logic
foreach($arrayAcademicYears as $key => $value)
    echo "KEY: " . $key . " -> VALUE: " . $value . "<br />";

それがあなたを助けることができることを願っています!

于 2012-06-25T16:12:05.910 に答える
0

これにより、配列が逆になり、最新のものが最初に表示されます。

$arrayAcademicYears = array_reverse($arrayAcademicYears);

すぐ上に配置します。

foreach($arrayAcademicYears as $k => $v) {

Array_reverse は、何らかの理由で、04-05 年を除いて、すべてのアイテムのキーを 0 増分に変更します。更新され、正しい並べ替えを実現する次の関数を使用します。

    function array_mtf(&$arr, $keytom, $reverse = false){
        $tmp = array();
        foreach($arr as $key => $value){
            if($key == $keytom){
                $tmp[$key] = $value;
                unset($arr[$key]);
            }
        }

                    if($reverse)
            arsort($arr);

        $arr = $tmp + $arr;
    }

使用方法は次のとおりです。

array_mtf($array_to_sort, $key_to_move_first, true);    

したがって、関数ブロックをコードに追加してから、次を置き換えます。

$arrayAcademicYears = array_reverse($arrayAcademicYears);

array_mtf($arrayAcademicYears, $currentAcademicYear);   

結果の配列は次のようになります。

Array
(
[1112] => 2011-2012
[1213] => 2012-2013
[0405] => 2004-2005
[9091] => 1990-1991
[8990] => 1989-1990
[8889] => 1988-1989
)
于 2012-06-25T15:49:38.110 に答える