Как отличить, используя 2 значения из многомерного массива в PHP - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть многомерный массив в данных PHP, как показано ниже.Я хочу иметь возможность суммировать значение 'price' от одного и того же id_gudang и id_receiver.

$data = {
    {
        'id_gudang': 69,
        'id_receiver': 121,
        'price': 1
    },
    {
        'id_gudang': 69,
        'id_receiver': 121,
        'price': 3
    },
    {
        'id_gudang': 71,
        'id_receiver': 134,
        'price': 7
    },
    {
        'id_gudang': 72,
        'id_receiver': 135,
        'price': 3
    },
    {
        'id_gudang': 72,
        'id_receiver': 216,
        'price': 5
    },
    {
        'id_gudang': 72,
        'id_receiver': 216,
        'price': 5
    }
}

Я хочу создать новый массив со значением 'price', которое является суммой 'price'в массиве раньше.Как сложить значение для того же id_gudang и id_receiver?поэтому результат будет:

$new_data = {
    {
        'id_gudang': 69,
        'id_receiver': 121,
        'price': 4
    },
    {
        'id_gudang': 71,
        'id_receiver': 134,
        'price': 7
    },
    {
        'id_gudang': 72,
        'id_receiver': 135,
        'price': 3
    },
    {
        'id_gudang': 72,
        'id_receiver': 216,
        'price': 10
    }
}

1 Ответ

0 голосов
/ 19 сентября 2019

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

    $new_data = [];

    foreach ($data as $key => $value) {
        $price = $value['price'];
        foreach ($data as $k => $v) {
            if ($key === $k || $value['id_gudang'] !== $v['id_gudang'] || $value['id_receiver'] !== $v['id_receiver']) {
                continue;
            }

            $price += $v['price'];
        }

        $uniqueKey = $value['id_gudang'] . $value['id_receiver'];

        $new_data[$uniqueKey] = [
            'id_gudang' => $value['id_gudang'],
            'id_receiver' => $value['id_receiver'],
            'price' => $price
        ];
    }

    print_r($new_data);

    // print_r(array_values($new_data)); // if you need restart keys
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...