2012-06-25 137 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

太棒了!非常感谢它的帮助我的伟大解释! –

相关问题