PHP Array Group использует дату с несколькими ключами и назначает сумму ключей

Когда вам нужно добавить звуки в свой проект, вы сделаете это, сыграв .wav файл (ы). Затем вам нужно добавить файлы .wav, подобные этому.

   using System.Media; //write this at the top of the code

   SoundPlayer my_wave_file = new SoundPlayer("F:/SOund wave file/airplanefly.wav");
   my_wave_file.PlaySync(); // PlaySync means that once sound start then no other activity if form will occur untill sound goes to finish

Помните, что вам нужно записать путь к файлу с форматированием слэшей (/), не используйте обратные косые черты (\) при указании пути к файлу, иначе вы получите сообщение об ошибке.

Также обратите внимание: если вы хотите, чтобы во время воспроизведения звучания звучали другие вещи, вы можете изменить my_wave_file.PlaySync(); с my_wave_file.PlayAsync();.

0
задан Suneth Kalhara 17 January 2019 в 06:31
поделиться

2 ответа

Нам нужно увеличить способ оплаты вместо массива слияния, чтобы предотвратить перезапись старого значения. Ниже код работает для меня

<?php
$shipment = [
    [
        'Datum' => '2016-07-07',
        'C' => 1,
    ],
    [
        'Datum' => '2016-07-07',
        'C' => 1,
    ],
    [
        'Datum' => '2016-07-07',
        'Paypal' => 1,
    ],
    [
        'Datum' => '2016-07-07',
        'Bank' => 1,
    ],
    [
        'Datum' => '2016-07-12',
        'Bank' => 1,
    ],
];

$template = ['C' => 0, 'Afterpay' => 0, 'Paypal' => 0, 'Bank' => 0, 'Ideal' => 0];
$result = [];

array_walk($shipment, function ($v) use (&$result, $template) {
    // Init by Datum if it is not in array
    $date = $v['Datum'];
    if (!isset($result[$date])) {
        $result[$date] = $template;
    }

    // Unset Datum to get final payment method only
    unset($v['Datum']);
    $itemKey = array_keys($v)[0];

    // Increase number
    $result[$date][$itemKey] += $v[$itemKey];
});

// Dump result
var_dump($result);
0
ответ дан Duy Nguyen Hoang 17 January 2019 в 06:31
поделиться

Это происходит потому, что array_merge переопределяет данные, если 2 ключа одинаковы - вам нужно добавить все поля.

Во-первых, измените $array1 с полем инициализации как 0 вместо null.

Во-вторых, в вашем array_walk замените $array2[$a] = array_merge($array2[$a], $v); на:

foreach($v as $k => $v)
    $array2[$a][$k] += $v;

Таким образом, вы сложите каждую категорию

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

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