简体   繁体   中英

How to get Php multidimensional array same key’s same value’s related total in new array?

  • Php multidimensional array same key's same value's related total in new array. I have an array of following mentioned. i need new array as total qty of same item_id. anyone can help would be appreciate. My Original Array is as following

Array
(
    [a] => Array
        (
            [item] => Array
            (
                [item_id] => 1
        )
        [qty] => 0
    ),
    [b] => Array
        (
            [item] => Array
            (
                [item_id] => 2
            )
            [qty] => 35
    ),
    [c] => Array
    (
            [item] => Array
            (
                [item_id] => 2
            ) 
           [qty] => 15
    ),
    [e] => Array
    (
            [item] => Array
            (
                [item_id] => 3
            ) 
            [qty] => 20
    ),

);
  • I want array Output like following :

     Array( [0] => Array ( [item_id] => 1, [item_total_qty] => 0, ) [1] => Array ( [item_id] => 2, [item_total_qty] => 50, ) [2] => Array ( [item_id] => 3, [item_total_qty] => 20, ) ); 

Simple foreach on your original table:

$sorted = array();
foreach ($original as $item) {
    $id = $item['item']['item_id'];
    $sorted[$id]['item_total_qty'] = $sorted[$id] ? $sorted[$id] + $item['qty'] : item['qty'];
    $sorted[$id]['item_id'] = $id;
}
$sorted = array_values($sorted);

Hope it help

$arrays = array(
    'a' => array(
        'item' => array(
            'item_id' => 1
        ),
        'qty' => 0
    ),
    'b' => array(
        'item' => array(
            'item_id' => 2
        ),
        'qty' => 35
    ),
    'c' => array(
        'item' => array(
            'item_id' => 2
        ),
        'qty' => 15
    ),
    'd' => array(
        'item' => array(
            'item_id' => 3
        ),
        'qty' => 20
    )
);

$result = array();

foreach ($arrays as $key => $array) {
    if (is_array($result) && !empty($result)) {
        foreach ($result as $key => $r) {
            if ($r['item_id'] ==   $array['item']['item_id']) {
                $result[$key]['item_total_qty'] += $array['qty'];
                 continue 2;
            }

        }

        $result[] = array(
                    'item_id' => $array['item']['item_id'],
                    'item_total_qty' => $array['qty']);

    } else {
        $result[] = array(
                    'item_id' => $array['item']['item_id'],
                    'item_total_qty' => $array['qty']);
    }
}

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