如何按日期对$ _POST数组进行排序字符串
我在提交表单时传递了一个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"
}
您需要使用您自己的排序功能。
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);
所以你要排序的 “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(),您可以按升序键排序的数组。
您可以使用usort这个
usort($myArray, function($a,$b){
return ((new DateTime($a['DatesColumn'])) < (new DateTime($b['DatesColumn']))) ? -1 : 1;
});
日期是一个标准的PHP类吗?我会使用\ DateTime来代替 – ip512
谢谢你纠正这个问题,我被自动纠正太久了 –
如果你不能刻意去格式化你的问题,所以它的可读性....我们为什么要费心回答呢? – RiggsFolly