简体   繁体   中英

php - sum values in an array

I have an array called $results that I need to sum the Total_Sales per Month. I have the code below that gives me the results I need but I also get notices. How do I improve the code?

$results

array(4) {
  [0]=>
  array(3) {
    ["Month"]=>
    string(1) "1"
    ["Country"]=>
    string(2) "AU"
    ["Total_Sales"]=>
    string(7) "9095.70"
  }
  [1]=>
  array(3) {
    ["Month"]=>
    string(1) "1"
    ["Country"]=>
    string(2) "CA"
    ["Total_Sales"]=>
    string(9) "113993.00"
  }
  [2]=>
  array(3) {
    ["Month"]=>
    string(1) "2"
    ["Country"]=>
    string(2) "AU"
    ["Total_Sales"]=>
    string(7) "7393.65"
  }
  [4]=>
  array(3) {
    ["Month"]=>
    string(1) "2"
    ["Country"]=>
    string(2) "CA"
    ["Total_Sales"]=>
    string(9) "100279.43"
  }

Here's my code so far. The array that it returns are the results that I need but I get notices

Code

$newarr=array();
foreach($results as $value) {
    $Month = $value['MONTH'];
    $Total_Sales = $value['Total_Sales'];
    array_key_exists( $Month, $newarr ) ? $newarr[$Month]['MONTH'] = $Month : $newarr[$Month]['MONTH'] = 0;
    array_key_exists( $Month, $newarr ) ? $newarr[$Month]['Total_Sales']+=$Total_Sales : $newarr[$Month]['Total_Sales'] = 0;
}

$newarr

array(2) {
  [1]=>
  array(2) {
    ["MONTH"]=>
    string(1) "1"
    ["Total_Sales"]=>
    float(123088.7)
  }
  [2]=>
  array(2) {
    ["MONTH"]=>
    string(1) "2"
    ["Total_Sales"]=>
    float(107673.08)
  }

Notices

Notice: Undefined index: Total_Sales in /var/www/html/analytics/views/sales_year_line_data.php on line 120

Notice: Undefined index: Total_Sales in /var/www/html/analytics/views/sales_year_line_data.php on line 120

This warning is arised since at very first time in loop , $newarr[$Month]['Total_Sales'] is not set so shothand sum is not allowed , so do it as below -

    foreach($results as $value) {
        $Month = $value['MONTH'];
        $Total_Sales = $value['Total_Sales'];
        array_key_exists( $Month, $newarr ) ?
        $newarr[$Month]['MONTH'] = $Month : $newarr[$Month]['MONTH'] = 0;
        array_key_exists( $Month, $newarr ) ? 
        $newarr[$Month]['Total_Sales']=
           (isset($newarr[$Month]['Total_Sales'])?$newarr[$Month]['Total_Sales']:0)
           :$Total_Sales :
        $newarr[$Month]['Total_Sales'] = 0;
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM