2012-06-25 126 views
1

元素我有一個學年的數組:PHP:建立一個數組的第一個元素,你需要

$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程序員:))

+0

那麼你要找的是打印當前學年的第一個? –

+1

..或者你想扭轉陣列? – dotty

+0

你輸出的邏輯是什麼? –

回答

0

這將扭轉你的陣列,首先顯示最新:

$arrayAcademicYears = array_reverse($arrayAcademicYears); 

把它放在略高於:

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

Array_reverse會出於某種原因,將所有物品上的鑰匙更改爲0增量,但04-05年除外。使用以下更新的功能,並實現正確的排序。

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 
) 
+0

非常感謝,現在我需要1112以上的currentAcademicYear 1112.我現在怎麼把它添加到元素的頂部? –

+0

用新的方法和功能更新答案,以達到您想要的效果。 –

+0

非常感謝,工作很棒! –

0

當你想學,我建議你使用更方便的邏輯,只使用一個陣列,像這樣:

// 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 />"; 

希望它可以幫助你!

+0

太棒了!非常感謝它的幫助我的偉大解釋! –

相關問題