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