2014-11-25 192 views
0

我有以下阵列数组排序按关键字值

Array ([0] => Array ([lastUpload] => [lastPost] => Sun Nov 23 2014 16:54:13 [username] => blt152561 [email] => [email protected] [joined] => Sun Nov 23 2014 16:49:09 [prodCount] => 2 [mediaCount] => 0 [userId] => 77292aaf-e540-465c-9319-8dd74c8d7f12) [1] => Array ([lastUpload] => [lastPost] => [username] => mvbg40 [email] => [email protected] [joined] => Sun Nov 23 2014 9:31:43 [prodCount] => 0 [mediaCount] => 0 [userId] => a2998c68-1c9a-49b9-8c78-ced3cffaa109) [2] => Array ([lastUpload] => Sun Nov 23 2014 7:54:03 [lastPost] => Sun Nov 23 2014 7:53:53 [username] => flexingladies [email] => [email protected] [joined] => Sun Nov 23 2014 7:47:44 [prodCount] => 1 [mediaCount] => 1 [userId] => 3b4b6aad-de95-428c-95ed-cb4fe963f322) [3] => Array ([lastUpload] => [lastPost] => Sat Nov 22 2014 8:05:30 [username] => dewey [email] => [email protected] [joined] => Sat Nov 22 2014 8:02:01 [prodCount] => 1 [mediaCount] => 0 [userId] => 08220286-6a24-49ff-929b-ccb4e0e10c3e) [4] => Array ([lastUpload] => [lastPost] => Thu Nov 20 2014 18:43:56 [username] => mhirsen99 [email] => [email protected] [joined] => Thu Nov 20 2014 18:43:09 [prodCount] => 1 [mediaCount] => 0 [userId] => ddea4f04-b035-4e8d-a777-cb4a2813b705)) 

,我想在lastPost值进行排序。

我不知道如何去做这件事。有人能指引我朝着正确的方向吗?我试过ksort,但它只是返回1而不是排序的数组。

+1

只要搜索过计算器 – sectus 2014-11-25 05:13:08

+0

或[php.net(http://php.net/manual/en/array .sorting.php)超过 – 2014-11-25 05:14:02

回答

0

你必须使用的foreach,使这项工作:

foreach ($array as $key => $value) 
    $ordered[$value['lastPost']] = $value; 

ksort($ordered, SORT_ASC); 
+0

这种有效,但由于某些原因,那些没有['lastPost']键分散在结果中,应该都在底部/顶部取决于排序不? – 2014-11-25 11:56:20

+1

你可以使用!empty(),isset()或array_key_exists()不允许它们包含在有序数组中http://php.net/manual/en/function.array-key-exists.php – jitendrapurohit 2014-11-26 05:31:50

0

尝试使用此

asort($array); 

到按升序对数组进行排序,根据该值

arsort($array) ; 

到降序对数组进行排序,根据该值

0

您可以使用usort按键进行自定义排序

usort($array, function($a, $b) { return $a['lastPost'] - $b['lastPost']; });