PHP:组合数组,然后排序

PHP:组合数组,然后排序,php,mysql,arrays,Php,Mysql,Arrays,我是PHP新手,尝试将多个产品的评论结合起来,然后按日期进行排序 我能够访问特定类别产品的所有评论,但不是将它们合并,例如,产品1将对其评论进行排序,然后将其排序到产品2的下方,等等: Product 1 21/12/2019 Product 1 23/12/2019 Product 2 20/12/2019 Product 2 21/12/2019 Product 3 21/12/2019 当我真的想结合这些结果时: Product 2 20/12/2019 Product 1 21/12/

我是PHP新手,尝试将多个产品的评论结合起来,然后按日期进行排序

我能够访问特定类别产品的所有评论,但不是将它们合并,例如,产品1将对其评论进行排序,然后将其排序到产品2的下方,等等:

Product 1 21/12/2019
Product 1 23/12/2019
Product 2 20/12/2019
Product 2 21/12/2019
Product 3 21/12/2019
当我真的想结合这些结果时:

Product 2 20/12/2019
Product 1 21/12/2019
Product 2 21/12/2019
Product 3 21/12/2019
Product 1 23/12/2019
我目前通过以下方式获得特定类别中的所有产品ID:

$reviews = $this->model_catalog_product->getProducts($filter_reviews);
然后,我使用产品ID获取每个产品的评论,然后分配要使用的值:

foreach ($reviews as $result) {
    $reviews = $this->model_catalog_review->getReviewsByProductId($result['product_id']);

    foreach ($reviews as $result) {
        $data['reviews'][] = array(
            'product_id'  => $result['product_id'],
            'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
            );
     }  
}
打印数组
print\r($data['reviews')foreach循环之外的代码告诉我:

Array ( 
[0] => Array ( [product_id] => 1 [date_added] => 23/12/2019 ) 
[1] => Array ( [product_id] => 1 [date_added] => 23/10/2019 ) 
[2] => Array ( [product_id] => 1 [date_added] => 21/10/2019 ) 
[3] => Array ( [product_id] => 2 [date_added] => 28/11/2019 ) 
[4] => Array ( [product_id] => 2 [date_added] => 29/10/2019 ) 
[5] => Array ( [product_id] => 2 [date_added] => 28/10/2019 ) 
[6] => Array ( [product_id] => 2 [date_added] => 28/10/2019 ) 
[7] => Array ( [product_id] => 2 [date_added] => 27/10/2019 ) )
有没有一种方法可以在foreach循环中实现结果的组合?因此,它不是将所有产品1放在一起,然后再将产品2放在一起,而是将它们合并在一起

我尝试使用usort函数比较每个日期的附加值,然后进行排序。这适用于排序,例如从最旧到最新或从最新到最旧,但不是将所有评论组合在一起然后进行排序,而是先对产品1进行排序,然后再对产品2进行排序,等等

function sorta($a, $b) {
    if ($a['date_added'] == $b['date_added']) return 0;
    return ($a['date_added'] < $b['date_added']) ? 1 : -1;
}
我也尝试过:

array_multisort( array_column($reviews, "date_added"), SORT_ASC, $reviews);

没有运气。任何帮助或指点都会很好

我不理解这个上下文中的“combine”这个词。排序本身有效吗?问题是什么?为什么有嵌套循环?而内部循环正在重新定义
$reviews
。如果要对最终结果进行排序,应该对
$data['reviews']
进行排序,而不是
$reviews
@草莓我无法将所有的评论排序在一起,而是对产品1的评论进行排序,然后对产品2的评论进行排序。但是如果最新的评论来自产品2,我希望它是所有评论(1和2)中的第一个,而不是产品2的第一个评论。我不确定这是否是因为我正在创建多个阵列?希望我解释得更好!
array_multisort( array_column($reviews, "date_added"), SORT_ASC, $reviews);