【问题标题】:how do I Sort and organize data from csv file in php如何在php中对csv文件中的数据进行排序和组织
【发布时间】:2016-01-31 00:17:55
【问题描述】:

我有一个 csv 文件,其中包含我的车辆库存,我想知道如何根据我拥有它的时间对该库存进行排序。

这是我想要输出的 -

30 辆 0-30 天车龄

25 辆 31-60 天车龄

10 辆 60-90 天车龄

2 辆 90 天以上的汽车

我有一个名为 $numberDays 的变量,它计算我拥有汽车的天数,并给我一个整数,如“30”或其他任何值..

这是我所拥有的 - $csv 是数组

foreach($csv as $car){

//Calculate days in stock
$todaydate = date("m/d/Y");
$dis = $car[21]; //date stocked in
$startTimeStamp = strtotime($todaydate);
$endTimeStamp = strtotime($dis);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; 
$numberDays = intval($numberDays);

}

【问题讨论】:

  • 是的 $csv 是一个数组抱歉我更新了问题
  • 好的,你能举一个你的csv的小例子吗?只需 3 行就足以测试我的代码 :)
  • 抱歉不确定您的要求,您想查看 csv 文件结构吗?

标签: php arrays csv foreach


【解决方案1】:
$howlong = array("0-30days"=>0, "31-60days"=>0, "61-90days"=>0, "91+days"=>0);
foreach($csv as $car){
  ...
  $numberDays = intval($numberDays); //last line in your code
  if($numberDays<=30) $howlong["0-30days"]++;
  elseif($numberDays<=60) $howlong["31-60days"]++;
  elseif($numberDays<=90) $howlong["61-90days"]++;
  elseif($numberDays>90) $howlong["91+days"]++;
}

echo $howlong["0-30days"]." cars 0-30 days old";
echo $howlong["31-60days"]." cars 31-60 days old";
//etc

【讨论】:

  • +1 给出一个简单的解决方案;我会将计数器定义为数组并将对象推入其中,以更轻松地进一步使用这种“排序”。
【解决方案2】:

类似的东西应该适合你。未经测试!

如果 $csv[n][21] 是一个包含日期的字符串,它应该可以工作。

// Simple Bubble-Sort
// Sorting by Date ASC
$changed = true;
while ($changed) {
    $changed = false;


    for ($n = 0; $n < count($csv) - 1; $n++) {
        if (strtotime($csv[n][21]) > strtotime($csv[n + 1][21])) {
            // Swap!
            $tmp = $csv[n];
            $csv[n + 1] = $csv[n];
            $csv[n] = $tmp;

            $changed = true;
            // We could add a "break" here
        }
    }

}

编辑

好的,现在您更新了您的问题,而我的回答不再适合您的问题。我还是把它留在这里,用关键字进行其他搜索。

【讨论】:

    猜你喜欢
    • 2021-07-31
    相关资源
    最近更新 更多