-2

Please let me know how can sort array with one column line_total descending format. I want that array in line_total descending format bcoz i want to display data upper sale to lower sale. So please help me.

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
)
floriank
  • 25,546
  • 9
  • 42
  • 66
Mohsin khan
  • 136
  • 6

1 Answers1

0

You need to use usort function http://php.net/manual/en/function.uksort.php . The rest is just my interpretation of what you want to achieve - sort transactions by sum of line_total in products

$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);
});
Piotr Pasich
  • 2,639
  • 2
  • 12
  • 14