2017-02-09 3 views
-2

Bitte lassen Sie mich wissen, wie Array mit einer Spalte line_total absteigend Format sortieren kann. Ich möchte dieses Array in line_total absteigend Format Bcoz ich möchte Daten oberen Verkauf zu niedrigeren Verkauf anzuzeigen. Also bitte hilf mir.Wie sortiere ich Array in PHP

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 
) 
+0

Ich denke, das Ihnen helfen würde: http://stackoverflow.com/questions/2699086/sort-multi -dimensional-array-by-value –

+0

http://php.net/manual/en/function.array-multisort.php – Mohammad

+0

Ich verstehe nicht wirklich die Bedeutung von oberen Verkauf zu niedrigeren Verkauf, aber ist das Ergebnis aus der Datenbank ? Wenn ja, können Sie stattdessen über sql sortieren. – bugscoder

Antwort

0

Sie benötigen http://php.net/manual/en/function.uksort.phpusort Funktion zu verwenden. Der Rest ist nur meine Interpretation dessen, was Sie erreichen wollen - Art Transaktionen durch Summe von line_total in Produkte

$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); 
});