我怎么能在PHP中排序数组

时间:2017-02-09 06:45:44

标签: php arrays sorting

请告诉我如何使用一列line_total降序格式对数组进行排序。我想要以line_total降序格式bcoz的数组我希望显示数据上销售到较低销售。所以请帮助我。

Array
(
    [totalusers] => 1
    [TranReport] => Array
        (
            [start] => 01-01-2017
            [end] => 31-12-2017
        )

    [webhits] => 794
    [paypal] => Yes
    [cash] => No
    [Transactions] => Array
        (
            [0] => Array
                (
                    [order_date] => 03-02-2017
                    [customer_name] => Mohsin khan
                    [payment_method] => PayPal
                    [product_list] => Array
                        (
                            [0] => Array
                                (
                                    [product_name] => USB Cable – Iphone → 1M USB Cable - Iphone
                                    [qty] => 1
                                    [line_total] => 9
                                )

                            [1] => Array
                                (
                                    [product_name] => USB Cable – Iphone → 2M USB Cable - Iphone
                                    [qty] => 2
                                    [line_total] => 24
                                )

                        )

                    [quantity] => 3
                    [order_currency] => USD
                    [order_total] => 48.00$
                    [new_total] => 48.00
                )

            [1] => Array
                (
                    [order_date] => 09-01-2017
                    [customer_name] => Mohsin khan
                    [payment_method] => PayPal
                    [product_list] => Array
                        (
                            [0] => Array
                                (
                                    [product_name] => AA USB Charger
                                    [qty] => 1
                                    [line_total] => 15
                                )

                            [1] => Array
                                (
                                    [product_name] => Car Charger - Dual USB - Low Profile
                                    [qty] => 1
                                    [line_total] => 15
                                )

                            [2] => Array
                                (
                                    [product_name] => Mister Hose → 20m Mister Hose
                                    [qty] => 1
                                    [line_total] => 20
                                )

                        )

                    [quantity] => 3
                    [order_currency] => USD
                    [order_total] => 50.00$
                    [new_total] => 50.00
                )

            [2] => Array
                (
                    [order_date] => 07-01-2017
                    [customer_name] => Mohsin khan
                    [payment_method] => PayPal
                    [product_list] => Array
                        (
                            [0] => Array
                                (
                                    [product_name] => Quick Charge V3 - Dual USB -  Car Charger
                                    [qty] => 1
                                    [line_total] => 15
                                )

                            [1] => Array
                                (
                                    [product_name] => Car Charger - Dual USB - Low Profile
                                    [qty] => 1
                                    [line_total] => 15
                                )

                            [2] => Array
                                (
                                    [product_name] => Mister Hose → 20m Mister Hose
                                    [qty] => 1
                                    [line_total] => 20
                                )

                        )

                    [quantity] => 1
                    [order_currency] => USD
                    [order_total] => 15.00$
                    [new_total] => 15.00
                )

        )

    [deliveytotal] => 0
)

1 个答案:

答案 0 :(得分:0)

您需要使用usort函数http://php.net/manual/en/function.uksort.php。其余的只是我对你想要实现的目标的解释 - 按产品中line_total的总和对事务进行排序

$array = []; //your array

function sumLinesTotal($product_list) {
    return array_sum(array_map($product_list, function($product){
        return $product['line_total'];
    });
}

usort($array['Transactions'], function ($a, $b) {
    return sumLinesTotal($a) < sumLinesTotal($b);
});