Как объединить значения для элементов массива, имеющих один и тот же ключ, чтобы удалить дубликаты ключей? - PullRequest
3 голосов
/ 02 января 2012

У меня есть многомерный массив PHP:

$arr = array(0 => array('www.foo.com' => 'a'), 1 => array('www.bar.com' => 'b'), 2 => array('www.foo.com' => 'c'));

Как бы я объединил значения, которые используют один и тот же ключ, а затем удалил дубликаты, чтобы у меня осталось:

$arr = array(0 => array('www.foo.com' => 'a,c'), 1 => array('www.bar.com' => 'b'));

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Нет встроенной функции, которая объединяет значения так, как в вашем примере.

array_combine() объединяет массивы.

Вам нужна функция, которая несколько имитируетэта функциональность, но вместо того, чтобы отбрасывать значение ключей, у которых уже есть значение, вам нужно выполнить конкатенацию строк.

function array_concat(Array $array1array, Array $array2array) {
    foreach ($array2array as $key => $value) {
        $newval = "";
        if (isset($array1array[$key])) {
            $newval = $array1array[$key] . ",";
        }
        $array1array[$key] = $newval . $value;
    }
    return $array1array;
}

Оттуда вам нужно будет адаптировать функцию для применения к многомерным массивам.

0 голосов
/ 02 января 2012

Вы можете перебирать массив, используя функцию array_keys, чтобы получить ключ от любых существующих ключей, после того, как вы выяснили, сколько у вас есть, вы можете отредактировать первый экземпляр массива, чтобы иметь несколько значений, а затем сбросить остальные значения.

array_keys: http://www.php.net/manual/en/function.array-keys.php

unset: http://php.net/manual/en/function.unset.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...