Как сгруппировать значения в массиве по месяцам?

Переменные - это не что иное, как зарезервированные ячейки памяти для хранения значений. Это означает, что при создании переменной вы сохраняете некоторое пространство в памяти.

Основываясь на типе данных переменной, интерпретатор выделяет память и решает, что можно сохранить в зарезервированной памяти. Поэтому, присваивая переменным разные типы данных, вы можете хранить целые числа, десятичные знаки или символы в этих переменных.

Назначение значений для переменных

Переменные Python не нуждаются в явном объявлении в резервную память пространство. Объявление присваивается автоматически, когда вы присваиваете значение переменной. Знак равенства (=) используется для назначения значений переменным.

2
задан Yngvar Kalvø 17 January 2019 в 12:03
поделиться

3 ответа

Вы можете сделать что-то вроде этого:

    $accumulatedMonthly = DB::table('sold_tickets')
    ->select('price', 'created_at')
    ->where('event_id', $id)
    ->where('credited', null)
    ->where('user_id', '!=', null)
    ->orderBy('created_at')
    ->get();

     $accumulatedPerMonth = array();

     foreach ($accumulatedMonthly as $key => $value) 
     {
         if(array_key_exists(date('M y', strtotime($value->created_at)), $accumulatedPerMonth))
         {
             $accumulatedPerMonth[date('M y', strtotime($value->created_at))] += $value->price;  
         }
         else
         {
             $accumulatedPerMonth[date('M y', strtotime($value->created_at))] = $value->price; 
         }
     }
0
ответ дан Saleemi 17 January 2019 в 12:03
поделиться

попробуйте метод сбора данных, у вас будет массив данных.

Обновление Я изменил запрос.

$accumulatedMonthly = DB::table('sold_tickets')
    ->select(DB::raw('SUM("price") as price'), DB::raw("date_format('created_at','%M %y') as month"))
    ->where('event_id', $id)
    ->where('credited', null)
    ->where('user_id', '!=', null)
    ->orderBy('created_at')
    ->get()
    ->groupBy(DB::raw("date_format('created_at','%M %y')"))->pluck('price','month');
0
ответ дан umefarooq 17 January 2019 в 12:03
поделиться

Измените

foreach ($accumulatedMonthly as $k => $month) {
    foreach ($month as $m) {
        $accumulatedPerMonth[$k] = $m['price'];
    }
}

на:

foreach ($accumulatedMonthly as $k => $month) {
    $accumulatedPerMonth[$k] = 0;
    foreach ($month as $m) {
        $accumulatedPerMonth[$k] += $m['price'];
    }
}

, чтобы получить сумму всех цен.

0
ответ дан markmoxx 17 January 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: