1

I am looking to store sum of all keys inside an array here is my example code

<?php

// Sample data
$category = (object) ['category_name' => '32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1'];
// process
$category_sale_data = explode(',', $category->category_name);
foreach ($category_sale_data as $key => $value) {
    
                list($sale_key, $sale_value) = explode('*', $value);
                $category->sale_data[$sale_key][] = $sale_value;
                //$category->sale_data_sum[$sale_key][] += $sale_value;
}
// display
print_r($category);

getting this output working example -> https://3v4l.org/NAKfb#v7.0.0

Here is expected to get //$category->sale_data_sum[$sale_key][] += $sale_value;

I am expected output like this

stdClass Object
(
    [category_name] => 32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1
    [sale_data] => Array
        (
            [32459] => Array
                (
                    [0] => 1500
                )

            [32460] => Array
                (
                    [0] => 400
                )

            [32461] => Array
                (
                    [0] => 600
                )

        )
    [sale_data_sum] => 2500

)

3 Answers 3

2

Simply do this:

$category->sale_data_sum = 0; // initiate key
foreach ($category_sale_data as $key => $value) {
    list($sale_key, $sale_value) = explode('*', $value);
    $category->sale_data[$sale_key][] = $sale_value;
    $category->sale_data_sum += $sale_value; // add each sale value
}
Sign up to request clarification or add additional context in comments.

1 Comment

work 100% very quick and short solution awesome thumbs up !
1
$category = [ 'category_name' => '32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1' ];

// category_name
$result['category_name'] = $category['category_name'];

// sale_data
$splitted = preg_split('/[*,]/', $category['category_name']);
for($i = 0; $i < count($splitted); $i += 4) {
  $result['sale_data'][$splitted[$i]] = $splitted[$i + 1];
}

// sale_data_sum
$result['sale_data_sum'] = array_sum($result['sale_data']);

print_r($result);

Comments

0

Try this

<?php

    // Sample data
    $category = (object) ['category_name' => '32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1'];
    // process
    $category_sale_data = explode(',', $category->category_name);
    foreach ($category_sale_data as $key => $value) {
        
                    list($sale_key, $sale_value) = explode('*', $value);
                    $category->sale_data[$sale_key][] = $sale_value;
                    //$category->sale_data_sum[$sale_key][] += $sale_value;
    }
    
    function sum($carry, $item)
    {
        $carry += array_values($item)[0];
        return $carry;
    }
    
    $a = array_reduce(array_values($category->sale_data), "sum"); 
    
    var_dump($a);

Or

<?php

// Sample data
$category = (object) ['category_name' => '32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1'];
// process
$category_sale_data = explode(',', $category->category_name);
$category->sale_data_sum = null;
foreach ($category_sale_data as $key => $value) {
    
                list($sale_key, $sale_value) = explode('*', $value);
                $category->sale_data[$sale_key][] = $sale_value;
                $category->sale_data_sum += $sale_value;
}
// display
print_r($category);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.