2012-07-04 48 views
3

我想按日期和时间按ISO 8601格式对PHP中的数组进行排序。我仍然试图掌握PHP,并尝试了很多堆栈溢出的解决方案,但我无法确定正确的功能。希望这是一个简单的答案,对别人会有帮助。按ISO排序PHP数组日期

仅供参考,此阵列由Citrix API for GoToMeeting生成。我想首先在列表中以最快的时间基于startTime对数组进行排序。

这里是阵列的样子使用带有两个结果var_export介绍:

array (
0 => stdClass::__set_state(
    array(
    'createTime' => '2012-07-03T19:36:58.+0000', 
    'status' => 'INACTIVE', 
    'subject' => 'Client 1', 
    'startTime' => '2012-07-10T14:00:00.+0000', 
    'conferenceCallInfo' => 'United States: xxxxx Access Code: xxxxx', 
    'passwordRequired' => 'false', 
    'meetingType' => 'Scheduled', 
    'maxParticipants' => 26, 
    'endTime' => '2012-07-10T15:00:00.+0000', 
    'uniqueMeetingId' => 12345678, 
    'meetingid' => 123456789, 
) 
), 
1 => stdClass::__set_state(
    array(
    'createTime' => '2012-07-02T21:57:48.+0000', 
    'status' => 'INACTIVE', 
    'subject' => 'Client 2', 
    'startTime' => '2012-07-06T19:00:00.+0000', 
    'conferenceCallInfo' => 'United States: xxxxx Access Code: xxxxx', 
    'passwordRequired' => 'false', 
    'meetingType' => 'Scheduled', 
    'maxParticipants' => 26, 
    'endTime' => '2012-07-06T20:00:00.+0000', 
    'uniqueMeetingId' => 12345678, 
    'meetingid' => 123456789, 
) 
), 
) 

我的目标是,将其输出数组使用foreach循环HTML div的,这个代码已经完成,效果很好,但我排序关闭:-)

预先感谢您的帮助!

史蒂夫

+1

关于ISO8601的好处是,你可以一般只是做一个简单的字符串排序,并让他们在正确的顺序。看看[usort()](http://php.net/usort) –

回答

3

可以实现任何排序技术,你能想到的,如果你把它包装在一个回调,并使用usort()docs here

回调里面,你可以使用的strtotime或相似,并做简单的INT比较。

$myDateSort = function($obj1, $obj2) { 
    $date1 = strtotime($obj1->startTime); 
    $date2 = strtotime($obj2->startTime); 
    return $date1 - $date2; // if date1 is earlier, this will be negative 
} 
usort($myArray, $myDateSort); 
+0

感谢代码片段,不幸的是这不会影响我的结果。尝试了解代码,是usort为函数生成$ obj1,$ obj2输入吗? –

+0

有点......当你调用usort并将它传递给一个数组时,它会多次调用你的函数,每次传入数组中的2个对象。所以$ obj1和$ obj2是你数组保持的每个实例,因为它是值(我认为你的代码表明它们是stdClass实例)。在函数内部,您只需评估第一个“小于”第二个,如果是,则返回负的int,否则返回正值(或相同的零)。 PHP负责基于为大多数数组值对调用函数来实际对数组进行排序。 –

+0

第二次看后,我可以让我的数组按照正确的顺序排序和输出。如果您使用答案中提供的代码并且结果未进行排序,请注意其他人,尝试使用usort($ this - > $ myArray,$ myDateSort); –