这就是我现在所拥有的:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 53
[date] => 18 Sep 2010 10:29
[user] => 52
[post] => ytiuy
)
[1] => Array
(
[id] => 55
[date] => 11 Sep 2010 11:14
[user] => 52
[post] => this is a test post :]
)
)
[1] => Array
(
[0] => Array
(
[id] => 56
[date] => 4 Sep 2010 03:19
[user] => 55
[post] => pppost :DD:D:D:D
)
)
)
我想删除数组中的前两个“步骤”,然后按“date”值对数组进行排序,如下所示:
Array
(
[0] => Array
(
[id] => 56
[date] => 4 Sep 2010 03:19
[user] => 55
[post] => pppost :DD:D:D:D
)
[1] => Array
(
[id] => 55
[date] => 11 Sep 2010 11:14
[user] => 52
[post] => this is a test post :]
)
[2] => Array
(
[id] => 53
[date] => 18 Sep 2010 10:29
[user] => 52
[post] => ytiuy
)
)
有什么想法吗?
非常感谢,感谢所有帮助! :)
编辑:我还应该提一下,arrayitems的数量并不总是相同的。
答案 0 :(得分:3)
您应该能够使用带有array_merge函数的累加器模式将所有较低级别的数组合并在一起。
$result = array();
foreach ($oldarray as $child)
{
$result = array_merge($result, $child);
}
最后,您可以使用user defined sort函数对整个事物进行排序。
答案 1 :(得分:1)
Don Kirby的解决方案的替代方案是使用SplMaxHeap
,这将允许您一次迭代和排序:
class PostHeap extends SplMaxHeap
{
public function compare($post, $other)
{
return strtotime($post['date']) - strtotime($other['date']);
}
}
$postHeap = new PostHeap;
foreach($posts as $subArray) {
foreach($subArray as $post) {
$postHeap->insert($post);
}
}
$postHeap
将按降序日期顺序包含帖子,例如最新的约会。如果您想使用compare
,可以使用usort
函数中的代码。然而,订单将会升序。
答案 2 :(得分:0)
你有两个阵列吗?或者更多?他们已经排序了吗?如果是这样,您可以使用它来更有效地组合它们。如果没有,您可能需要先对它们进行排序。
大致是:
当然,如果你根本不关心性能,你可以简单地组合所有数组然后对它进行排序。
对于排序,您可能需要使用:http://www.php.net/manual/en/function.sort.php#99700
@Don Kirkby:的确如此:它基本上是mergesort,但它只适用于已排序的数组。如果他们都没有被排序,你可能最好将它们组合起来并使用quicksort。