Собрать массив из уже имеющего

169
04 апреля 2018, 08:41

Есть такой массив

Array
(
    [chat_111] => Array
        (
            [0] => 47
            [1] => 1
        )
    [chat_110] => Array
        (
            [0] => 47
            [1] => 3
        )
    [chat_1167] => Array
        (
            [0] => 32
            [1] => 3
        )
)

Как с него создать новый массив такого вида:

Array
(
    [47] => [4]
    [32] => [3]
)

Вот на картинке ниже попитался схематически показать что я пробую сделать:

Answer 1

Суть в том, чтобы пройти по массиву циклом, и на каждой итерации проверять наличие ключей - если такой ключ есть в массиве, добавляем к его значению значение текущего ключа, а если ключа в массиве нет - добавляем пару ключ=>значение. Пример:

$array = [
    'chat_111' =>  [
        47,
        1
    ],
    'chat_110' => [
        47,
        3
    ],
    'chat_1167' =>  [
        32,
        3
    ],
];
$out = [];
foreach ($array as $a) {
    if ( (array_key_exists($a[0], $out)) !== false ) {
        $out[$a[0]] += $a[1];
    } else {
        $out[$a[0]] = $a[1];
    }
}
var_dump($out);

Результат:

array (size=2)
  47 => int 4
  32 => int 3
READ ALSO
Не срабатывает удаление cookie через AJAX

Не срабатывает удаление cookie через AJAX

Есть файл delphp в этом файле есть такой код:

148
Разбить строку на массив PHP

Разбить строку на массив PHP

Есть строка вида {1}{2}{3}{4}{5}{n}

164
Как сравнить массивы PHP правильно?

Как сравнить массивы PHP правильно?

Есть много массивов типа:

144
Если значение пусто то берем прошлое

Если значение пусто то берем прошлое

Как реализовать что-бы при цикли если значение пустое нужно взять его из прошлого раза

151