4

PHPの配列をISO8601形式の日付と時刻で並べ替えようとしています。私はまだPHPを把握しようとしており、スタックオーバーフローで多くのソリューションを試しましたが、適切な機能を特定することができません。うまくいけば、これは簡単な答えであり、他の人に役立つでしょう。

参考までに、このアレイはCitrix APIforGoToMeetingによって生成されました。リストの最初の最も早い時間のstartTimeに基づいて配列を並べ替えたいと思います。

var_exportを使用した配列は次のようになり、2つの結果が表示されます。

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に出力することです。このコードは完全で正常に機能しますが、ソートはオフです:-)

よろしくお願いします!

スティーブ

4

1 に答える 1

4

コールバックでラップしてドキュメントをここで使用すると、考えられるあらゆる並べ替え手法を実装できます。usort()

コールバック内では、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);
于 2012-07-04T03:39:29.657 に答える