Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php按日期和时间列对csv数据进行排序 背景:_Php_Csv_Sorting - Fatal编程技术网

使用php按日期和时间列对csv数据进行排序 背景:

使用php按日期和时间列对csv数据进行排序 背景:,php,csv,sorting,Php,Csv,Sorting,我有一个读取csv文件的php脚本。此csv文件包含列。最后两列是日期和时间 我需要做的是按日期和时间列按升序排列这些数据 我的PHP脚本: $data = file("myfile.csv"); $string = ""; for($i = 1; $i < count ( $data ); $i ++) { $info1 = str_getcsv($data [$i],",",''); $string

我有一个读取csv文件的php脚本。此csv文件包含列。最后两列是日期和时间

我需要做的是按日期和时间列按升序排列这些数据

我的PHP脚本:

$data = file("myfile.csv"); 
$string = ""; 

for($i = 1; $i < count ( $data ); $i ++)
{ 
   $info1 = str_getcsv($data [$i],",",'');
  
    $string .= $info1 [4]  .  "," ; //colomns 1 in position 4 in csv file
    $string .= $info1 [6]  .  "," ; //colomns 2 in position 6 in csv file
    $string .= $info1 [7]  .  "," ; //colomns 3 in position 7 in csv file

    //colomns 4 --this colomn contain date like this format (2/8/2016)
     $string .= $info1 [2]  .  "," ;  
    //colomns 5 --this colomn contain timelike this format (12:30 AM) 
    $string .= $info1 [10];          
        
      
 
  $string .= "\n";
 }  
我需要像这样排序:

mark,mark,456345,5/10/2016,9:00 AM
mordl,mordl,23564,5/10/2016,1:00 PM
corten,corten,3216589,5/10/2016,12:00 PM
jack,jack,123645,5/10/2016,8:00 AM
olemn,olemn,29845155,5/10/2016,2:00 PM
jab,jab,457362,5/10/2016,10:45 AM
monk,monk,326251,5/10/2016,3:00 PM
jack,jack,123645,5/10/2016,8:00 AM
mark,mark,456345,5/10/2016,9:00 AM
jab,jab,457362,5/10/2016,10:45 AM
corten,corten,3216589,5/10/2016,12:00 PM
mordl,mordl,23564,5/10/2016,1:00 PM
olemn,olemn,29845155,5/10/2016,2:00 PM
monk,monk,326251,5/10/2016,3:00 PM
usort( $first_dim, "compare" );
我能做些什么来实现这一点?

使用:
usort()
是一个PHP固有的函数,用于排序PHP数组。它可以用来帮助你

首先,为了使用
usort()
,您需要一个数组,因此您需要首先将数据推入数组,而不是将其推入字符串

设置阵列: 这部分很简单。您只需初始化一个数组,并使用

按如下方式启动脚本:

$data = file( "myfile.csv" );

$first_dimension = array();
$second_dimension = array();

for($i = 1; $i < count ( $data ); $i ++)
{ 
  $info1 = str_getcsv( $data[ $i ], "," , '' );

  $second_dimension = array( $info1[4], $info1[6], $info1[7], $info1[2], $info1[10] );
  array_push( $first_dimension, $second_dimension );
}
剖析此比较器: 在这个比较器中,我们将并排比较
$first\u dimension
中的两行,并确定其中一行应该在另一行之前还是之后

我们通过从该行获取日期(第3列)和时间(第4列)来实现这一点

然后,我们使用PHP的函数来比较每一次

注意:
date\u diff()
要求参数为php日期对象;我们用这个函数创建它们

排序方式:

实施:

mark,mark,456345,5/10/2016,9:00 AM
mordl,mordl,23564,5/10/2016,1:00 PM
corten,corten,3216589,5/10/2016,12:00 PM
jack,jack,123645,5/10/2016,8:00 AM
olemn,olemn,29845155,5/10/2016,2:00 PM
jab,jab,457362,5/10/2016,10:45 AM
monk,monk,326251,5/10/2016,3:00 PM
jack,jack,123645,5/10/2016,8:00 AM
mark,mark,456345,5/10/2016,9:00 AM
jab,jab,457362,5/10/2016,10:45 AM
corten,corten,3216589,5/10/2016,12:00 PM
mordl,mordl,23564,5/10/2016,1:00 PM
olemn,olemn,29845155,5/10/2016,2:00 PM
monk,monk,326251,5/10/2016,3:00 PM
usort( $first_dim, "compare" );
将数组转储为字符串: 要转储内容,只需使用PHP的本机函数将每行的元素连接成一个字符串,每个元素用逗号分隔

var $string = "";

for($i = 1; $i < count ( $first_dimension ); $i ++)
{ 
    $string .= implode( ",", $first_dimension[$i] );
    $string .= "\n"
}
var$string=”“;
对于($i=1;$i
使用:
usort()
是一个PHP固有的函数,用于排序PHP数组。它可以用来帮助你

首先,为了使用
usort()
,您需要一个数组,因此您需要首先将数据推入数组,而不是将其推入字符串

设置阵列: 这部分很简单。您只需初始化一个数组,并使用

按如下方式启动脚本:

$data = file( "myfile.csv" );

$first_dimension = array();
$second_dimension = array();

for($i = 1; $i < count ( $data ); $i ++)
{ 
  $info1 = str_getcsv( $data[ $i ], "," , '' );

  $second_dimension = array( $info1[4], $info1[6], $info1[7], $info1[2], $info1[10] );
  array_push( $first_dimension, $second_dimension );
}
剖析此比较器: 在这个比较器中,我们将并排比较
$first\u dimension
中的两行,并确定其中一行应该在另一行之前还是之后

我们通过从该行获取日期(第3列)和时间(第4列)来实现这一点

然后,我们使用PHP的函数来比较每一次

注意:
date\u diff()
要求参数为php日期对象;我们用这个函数创建它们

排序方式:

实施:

mark,mark,456345,5/10/2016,9:00 AM
mordl,mordl,23564,5/10/2016,1:00 PM
corten,corten,3216589,5/10/2016,12:00 PM
jack,jack,123645,5/10/2016,8:00 AM
olemn,olemn,29845155,5/10/2016,2:00 PM
jab,jab,457362,5/10/2016,10:45 AM
monk,monk,326251,5/10/2016,3:00 PM
jack,jack,123645,5/10/2016,8:00 AM
mark,mark,456345,5/10/2016,9:00 AM
jab,jab,457362,5/10/2016,10:45 AM
corten,corten,3216589,5/10/2016,12:00 PM
mordl,mordl,23564,5/10/2016,1:00 PM
olemn,olemn,29845155,5/10/2016,2:00 PM
monk,monk,326251,5/10/2016,3:00 PM
usort( $first_dim, "compare" );
将数组转储为字符串: 要转储内容,只需使用PHP的本机函数将每行的元素连接成一个字符串,每个元素用逗号分隔

var $string = "";

for($i = 1; $i < count ( $first_dimension ); $i ++)
{ 
    $string .= implode( ",", $first_dimension[$i] );
    $string .= "\n"
}
var$string=”“;
对于($i=1;$i
请在提问之前多做些校对……我回答了您的问题。请在提问之前多做些校对……我回答了您的问题。谢谢您的回答,我确实做了您所做的事情,但我没有得到任何结果,我不知道我为什么会发现问题,我更改此行$first\u dimension=array\u push($first\u dimension,$second\u dimension);向该数组推送($first\u dimension,$second\u dimension);谢谢你的工作now@ajack没问题,我会用bug Fixer更新我的答案谢谢你的回复,我确实做了你所做的,但我没有得到任何结果,我不知道我是怎么发现问题的,我更改了这行$first\u dimension=array\u push($first\u dimension,$second\u dimension);向该数组推送($first\u dimension,$second\u dimension);谢谢你的工作now@ajack没问题,我会用错误修正更新我的答案