訂購我有具有時間戳一致的[3]格式化陣列由指定的Unix時間戳在PHP
我想陣列(下面的陣列數據的一個例子)使用進行排序的陣列時間戳。我已經看到了一些使用兩種方法顯示這種做法的stackoverflow帖子,array_multisort()
和usort()
,但我一直無法複製。
以下是我根據我自己的代碼嘗試:
嘗試1 - 我通過數組usort,然後嘗試用在foreach把它拆開。應用此方法肯定會更改結果的順序,但日期似乎不是特定順序(升序,降序)。
function sortArray($a1, $a2){
if ($a1[3] == $a2[3]) return 0;
return ($a1[3] > $a2[3]) ? -1 : 1;
}
usort($the_array, "sortArray");
foreach($the_array as $sh) {
$uid = $sh['uid'];
$username = $sh['username'];
$datetime = $sh['datetime'];
$type = $sh['type'];
echo "<p> $uid , $username, $datetime, $type </p>";
}
嘗試2 - 使用array_multisor()這又使我產生了不同的順序嘗試,但我不明白它是什麼恰好排序。
foreach ($the_array as $key => $node) {
$timestamps[$key] = $node[3];
}
array_multisort($timestamps, SORT_ASC, $the_array);
//process the array with a foreach to show results
我的理論這裏是它不能正確處理Unix時間戳,我不知道我能做到這一點。取出時間戳的所有字符是否聰明,因此它是一個簡單的數字行(2014-01-02 03:02:12變成20140102030212)?還是有另一種方式來處理它與時間戳在它的當前形式?
這裏是陣列中的數據的例子:
Array
(
[0] => Array
(
[uid] => 20013
[0] => 20013
[username] => myhipswontlie
[1] => myhipswontlie
[rating] => 4.00
[2] => 4.00
[datetime] => 2014-01-27 23:40:56
[3] => 2014-01-27 23:40:56
[type] => rated
[4] => rated
)
[1] => Array
(
[uid] => 20025
[0] => 20025
[username] => brasilchika
[1] => brasilchika
[rating] => 4.00
[2] => 4.00
[datetime] => 2014-01-02 03:02:12
[3] => 2014-01-02 03:02:12
[type] => rated
[4] => rated
)
[2] => Array
(
[uid] => 10002
[0] => 10002
[username] => crtten
[1] => crtten
[datetime] => 2014-01-25 01:33:34
[2] => 2014-01-25 01:33:34
[type] => visits
[3] => visits
)
)
啊我甚至沒有注意到這是對我的切換。我現在意識到發生了什麼事情,其中一些結果的評分正在改變關鍵。非常感謝你。 – Jared