从文本文件中排序日期数组

时间:2014-04-20 08:45:41

标签: php arrays sorting

我有一个.txt文件,用于存储表单中的所有信息。我希望有1个PHP显示从最早的日期到今天的日期状态。

这是我的txt格式的一些示例:

  

ID4494(tab(“\ t”))12/02/2008(tab(“\ t”))ANJAY

     

ID4496(tab(“\ t”))14/04/2009(tab(“\ t”))SONJA

     

ID4499(tab(“\ t”))19/03/2014(tab(“\ t”))BRIAN

这是我的php文件

  

$ myfilename =“../ idfile / digid.txt”;

     

if(file_exists($ myfilename)&& filesize($ myfilename)> 0){

  $digArray = file($myfilename, FILE_IGNORE_NEW_LINES);

  sort($digArray);

  foreach($digArray as $dig) {

  $oneDigArray = explode("\t", $dig);

  echo "<p>$oneDigArray[0] - $oneDigArray[1] - $oneDigArray[2]</p>";

  }
     

} else {       echo“

没有数字身份证。

”;      }

我尝试使用sort ($digArray[1]);,因为日期是数组号。但它不会起作用。

有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用PHP的usort功能并提供您自己的比较功能。像这样:

function cmp($a, $b)
{
    return ($a[1] > $b[1]) ? 1 : -1;  // Ascending order
    // OR 
    return ($a[1] < $b[1]) ? 1 : -1;  // Descending order
}

usort($digArray, "cmp");

以上将按日期对数组进行排序。这是我做过的测试。

<强>测试

$digArray = array(
    array(
        "ID4496", "14/04/2009", "SONJA"
    ),
    array(
        "ID4499", "19/03/2014", "BRIAN"
    ),
    array(
        "ID4494", "12/02/2008", "ANJAY"
    ),
);

function cmp($a, $b)
{
    return ($a[1] > $b[1]) ? 1 : -1;  // Ascending order
}

usort($digArray, "cmp");

print_r($digArray);

<强>输出:

Array ( 
    [0] => Array ( [0] => ID4494 [1] => 12/02/2008 [2] => ANJAY ) 
    [1] => Array ( [0] => ID4496 [1] => 14/04/2009 [2] => SONJA ) 
    [2] => Array ( [0] => ID4499 [1] => 19/03/2014 [2] => BRIAN ) 
)