2017-05-31 185 views
0

我在提交表单时传递了一个POST数组。通过它,我循环,把结果放到使用这个表:

<table id="myTable"> 
<thead> 
    <tr><td>Exam Date</td><td>Subject Name</td><td>Subject Code</td><td>AM/PM</td></tr> 
</thead> 
<tbody> 
<?php 

$rowCount = count($_POST['exam_code_input']); 
//var_dump($_POST); 
    for($i=0; $i<$rowCount; $i++) 
     { 
     echo "<tr>"; 
     echo "<td>".$_POST['exam_date_input'][$i]."</td>"; 
     echo "<td>".$_POST['exam_code_input'][$i]."</td>"; 
     echo "<td>".$_POST['exam_title'][$i]."</td>"; 
     echo "<td>".$_POST['exam_time_input'][$i]."</td>"; 
     echo "</tr>"; 
     } 
?> 
</tbody> 
</table> 

我需要的日期表行进行排序。目前它将条目按索引放入表格中。这是var_dump($_POST)

array(13) { 
    ["your_name"]=> string(8) "Ian TEST" 
    ["candidate_number"]=> string(5) "12345" 
    ["centre_number"]=> string(4) "TEST" 
    ["school_year"]=> string(2) "12" 
    ["email"]=> string(23) "[email protected]" 
    ["mobile_number"]=> string(11) "12345455676" 
    ["exam_board"]=> string(2) "-1" 
    ["exam_date_input"]=> array(7) { 
      [0]=> string(10) "05/16/2017" 
      [1]=> string(10) "05/08/2017" 
      [2]=> string(10) "05/12/2017" 
      [3]=> string(10) "05/25/2017" 
      [4]=> string(10) "06/06/2017" 
      [5]=> string(10) "06/12/2017" 
      [6]=> string(10) "06/20/2017" 
      } 
    ["exam_code_input"]=> array(7) { 
      [0]=> string(9) "Arabic AL" 
      [1]=> string(10) "Biology AL" 
      [2]=> string(10) "Biology AL" 
      [3]=> string(10) "Biology AL" 
      [4]=> string(10) "Biology AL" 
      [5]=> string(10) "Biology AL" 
      [6]=> string(10) "Biology AL" 
      } 
    ["exam_title"]=> array(7) { 
      [0]=> string(34) "Understanding and Written Response" 
      [1]=> string(14) "Biology Unit 3" 
      [2]=> string(14) "Biology Unit 6" 
      [3]=> string(14) "Biology Unit 1" 
      [4]=> string(14) "Biology Unit 2" 
      [5]=> string(14) "Biology Unit 4" 
      [6]=> string(14) "Biology Unit 5" 
      } 
    ["exam_time_input"]=> array(7) { 
      [0]=> string(2) "AM" 
      [1]=> string(2) "PM" 
      [2]=> string(2) "PM" 
      [3]=> string(2) "PM" 
      [4]=> string(2) "PM" 
      [5]=> string(2) "PM" 
      [6]=> string(2) "AM" 
      } 
    ["token"]=> string(32) "bd62bdf4ba8a00174281499decb94d87" 
    ["btSubmit"]=> string(18) "Generate Timetable" 
} 
+0

如果你不能刻意去格式化你的问题,所以它的可读性....我们为什么要费心回答呢? – RiggsFolly

回答

0

您需要使用您自己的排序功能。

function array_sort_by_column(&$array, $column, $direction = SORT_ASC) { 
    $reference_array = array(); 

    foreach($array as $key => $row) { 
     $reference_array[$key] = $row[$column]; 
    } 

    array_multisort($reference_array, $direction, $array); 
} 

,并呼吁像:

array_sort_by_column($events_array, 'date'); 

var_dump($events_array); 
1

所以你要排序的 “exam_date_input” - 阵列,对不对?它与其他数据一致,如“exam_code_input”中的?

使用DateTime :: createFromFormat,您可以从日期值(例如05/08/2017)中首先创建一个DateTime对象,然后从中获取Timestamp(getTimestamp())。 然后我会建议你迭代你的POST数据,就像你已经在做的那样,并且创建一个新的数组以获得更好的数据结构。 像

array("{THETIMESTAMP}" => {all the other corresponding data, like in exam_code_input}) 

随着ksort(),您可以按升序键排序的数组。

0

您可以使用usort这个

usort($myArray, function($a,$b){ 
    return ((new DateTime($a['DatesColumn'])) < (new DateTime($b['DatesColumn']))) ? -1 : 1; 
}); 
+0

日期是一个标准的PHP类吗?我会使用\ DateTime来代替 – ip512

+0

谢谢你纠正这个问题,我被自动纠正太久了 –

相关问题