2016-09-18 10 views
0

私は作業しているプロジェクト用のメッセージシステムを開発しており、最新のメッセージdatetimeで一連の会話を整理したいと思います。配列値による多次元配列の並べ替え

ここに私の配列です:

Array(
    [0] = Array (
     [ID] => 1, 
     [USER] => 1, 
     [AUTHOR] => 2, 
     [TITLE] => Welcome to the Site!, 
     [DATETIME] => 2016-09-12 20:41:16, 
     [MESSAGES] => Array (
      [0] => Array (
       [ID] => 1, 
       [CONVERSATION] => 1, 
       [USER] => 1, 
       [CONTENT] => Welcome to the site User!, 
       [DATETIME] => 2016-09-13 00:19:20 
       ) 
      [1] => Array (
       [ID] => 2, 
       [CONVERSATION] => 1, 
       [USER] => 2, 
       [CONTENT] => Thanks for welcoming me!, 
       [DATETIME] => 2016-09-13 00:27:54 
       ) 
     ) 
    [1] = Array (
     [ID] => 2, 
     [USER] => 2, 
     [AUTHOR] => 1, 
     [TITLE] => Hello World!, 
     [DATETIME] => 2016-09-13 00:29:59, 
     [MESSAGES] => Array (
      [0] => Array (
       [ID] => 1, 
       [CONVERSATION] => 1, 
       [USER] => 1, 
       [CONTENT] => This is a test post., 
       [DATETIME] => 2016-09-13 00:19:45 
       ) 
      [1] => Array (
       [ID] => 2, 
       [CONVERSATION] => 1, 
       [USER] => 2, 
       [CONTENT] => This is an example response., 
       [DATETIME] => 2016-09-13 00:45:04 
       ) 
     ) 
) 

私は何をしたい最も秒との会話、最新のメッセージとの会話が最初となりますので、最新のメッセージの日時を使用して会話の配列を整理しています最近のメッセージは2番目となります。私は

array_multisort 
array_sort 
usort 

のようなさまざまな機能を見てきた私は、オンラインで他のソリューションを見つけたが、彼らは非常に私は誰もがこれらのチャットメッセージを整理するための最良の方法を知っているん探しているものと一致しないのですか?これは、最新のメッセージとの会話をオフに基づいて、各会話をソート

$datetimes = array(); 
$recentDate = 0; 
foreach($conversations as $conversation) { 
    foreach($conversation["MESSAGES"] as $message) { 
     $curDate = strtotime($message["DATETIME"]); 
     if($curDate > $recentDate) { 
      $recentDate = $curDate; 
     } 
    } 
    $datetimes[] = $recentDate; 
} 
array_multisort($datetimes, SORT_DESC, $conversations); 

+0

おそらくこれは私のコードに実装する方法がわかりません。http://stackoverflow.com/questions/20805143/php-converting-multidimensional-array-to-modified-preorder-traversal-tree –

+0

助けてくれますか? – Elxafil

答えて

0

わかりましたので、鉱山やテストに似た他の記事を検索し、コードを変更する年齢の後に私は私の解決策への答えを見つけました。

関連する問題