如何按发送日期订购短信

时间:2018-09-12 17:06:04

标签: php laravel twilio laravel-blade

我正在使用twilio在我的网站上的用户之间发送和接收消息。我可以同时显示入站和出站短信。

我这样检索邮件。

$receivedMessages = $twilio->messages
                         ->read(array(
                                 "from" => $user->phone,
                                 "to" => $siteNumber,
                             )
                         );

     $sentMessages = $twilio->messages
                         ->read(array(
                                 "from" => $siteNumber,
                                 "to" => $user->phone,
                             )
                         );

     $combinedMessages = array_merge($receivedMessages, $sentMessages);

我将combniedmessage变量传递给我的视图,然后遍历它们,并对入站和出站消息应用不同的样式。

 <ul class="text-container incoming-container">
           @foreach($combinedMessages as $message)
             <li class="text-message
              @if($message->direction == 'inbound')
                incoming-text
              @elseif($message->direction == 'outbound-api')
                outgoing-text
              @endif">
              <span>
                {{$message->body }}
              </span></br>
              <small>
                {{ (string)$message->dateCreated->format('d-m-Y H:i:s')}}
              </small>
             </li>
          @endforeach
         </ul>

首先显示入站,然后显示出站。无论如何发送,我如何按发送时间的顺序显示它们。

1 个答案:

答案 0 :(得分:1)

您需要做的是使用自定义排序函数对$combinedMessages数组进行排序,该函数将按对象的消息日期进行排序。

在此处签出uasort()命令:http://php.net/manual/en/function.uasort.php

<?php
// Sample Comparison function
function cmp($a, $b) {
    if ( $a->message_timestamp == $b->message_timestamp ) {
        return 0;
    }
    return ( $a->message_timestamp < $b->message_timestamp ) ? -1 : 1;
}

uasort( $combinedMessages, 'cmp' );
?>