как я сложу количество, если ключи одинаковые - PullRequest
0 голосов
/ 20 сентября 2018
Array
(


[INV828] => Array
    (
        [0] => shams interior
        [org_name] => shams interior
        [1] => INV828
        [inv_no] => INV828
        [2] => 1556
        [productid] => 1556
        [3] => E001-4ft
        [productname] => E001-4ft
        [4] => Paharganj
        [warehousename] => Paharganj
        [5] => 2018-04-19 16:55:05
        [date] => 2018-04-19 16:55:05
        [6] => 56
        [quantity_consumed] => 256
        [7] => 80364
        [invoiceid] => 80364
    )

[INV828] => Array
    (
        [0] => shams interior
        [org_name] => shams interior
        [1] => INV828
        [inv_no] => INV828
        [2] => 1556
        [productid] => 1556
        [3] => E001-4ft
        [productname] => E001-4ft
        [4] => Paharganj
        [warehousename] => Paharganj
        [5] => 2018-04-19 16:55:05
        [date] => 2018-04-19 16:55:05
        [6] => 56
        [quantity_consumed] => 56
        [7] => 80364
        [invoiceid] => 80364
    )

 )

Мне нужно добавить [quantity_consumed], где ключ массива [INV828] такой же. Я хотел бы добавить значения [quantity_consumed], равные 256 + 56, и сделать его единым.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Попробуйте: -

$arr = array(
    array('org_name' => 'shams interior','inv_no' => 'INV828','productid' => 1556,'productname' => 'E001-4ft','warehousename' => 'Paharganj','date' => '2018-04-19 16:55:05','quantity_consumed' => 256,'invoiceid' => 80364),
    array('org_name' => 'shams interior','inv_no' => 'INV829','productid' => 1556,'productname' => 'E001-4ft','warehousename' => 'Paharganj','date' => '2018-04-19 16:55:05','quantity_consumed' => 256,'invoiceid' => 80364),
    array('org_name' => 'shams interior','inv_no' => 'INV828','productid' => 1556,'productname' => 'E001-4ft','warehousename' => 'Paharganj','date' => '2018-04-19 16:55:05','quantity_consumed' => 56,'invoiceid' => 80364),
    array('org_name' => 'shams interior','inv_no' => 'INV829','productid' => 1556,'productname' => 'E001-4ft','warehousename' => 'Paharganj','date' => '2018-04-19 16:55:05','quantity_consumed' => 256,'invoiceid' => 80364)
    );
$newArray = array();
foreach($arr as $k => $data) {
    if (array_key_exists($data['inv_no'], $newArray)) { // If inv_no key is already exists, then just add the consumed quantity
        $newArray[$data['inv_no']]['quantity_consumed'] = $newArray[$data['inv_no']]['quantity_consumed'] + $data['quantity_consumed'];
    } else { // else add the data as new inv_no key
        $newArray[$data['inv_no']] = $data;
    }
}
echo "<pre>";
print_r($newArray);

Вывод: -

Array
(
    [INV828] => Array
        (
            [org_name] => shams interior
            [inv_no] => INV828
            [productid] => 1556
            [productname] => E001-4ft
            [warehousename] => Paharganj
            [date] => 2018-04-19 16:55:05
            [quantity_consumed] => 312
            [invoiceid] => 80364
        )

    [INV829] => Array
        (
            [org_name] => shams interior
            [inv_no] => INV829
            [productid] => 1556
            [productname] => E001-4ft
            [warehousename] => Paharganj
            [date] => 2018-04-19 16:55:05
            [quantity_consumed] => 512
            [invoiceid] => 80364
        )

)
0 голосов
/ 20 сентября 2018

Если у вас есть ассоциативный массив с ключами с одинаковым значением (например, [INV828]), последняя запись перезапишет существующую.

Для получения дополнительной информации см .: PHP Manual Arrays

Таким образом, в вашем массиве будет только следующая запись:

[INV828] => Array
(
    [0] => shams interior
    [org_name] => shams interior
    [1] => INV828
    [inv_no] => INV828
    [2] => 1556
    [productid] => 1556
    [3] => E001-4ft
    [productname] => E001-4ft
    [4] => Paharganj
    [warehousename] => Paharganj
    [5] => 2018-04-19 16:55:05
    [date] => 2018-04-19 16:55:05
    [6] => 56
    [quantity_consumed] => 56
    [7] => 80364
    [invoiceid] => 80364
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...