array_flip, но не потерять дубликаты ключей [duplicate]

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

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

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

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

2
задан SuperBiasedMan 2 October 2015 в 11:46
поделиться

2 ответа

Вам нужно сделать свою функцию вместе с array_flip как

$array = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"blue");

$res = array_flip($array);

foreach ($res as $k => $v)
    $res[$k] = implode(", ", array_keys($array, $k));
print_r($res);

Выход:

Array
(
    [red] => a
    [green] => b
    [blue] => c, d
)

Демо

3
ответ дан Narendrasingh Sisodia 19 August 2018 в 06:40
поделиться

array_flip не даст ожидаемого результата. Вместо этого вы можете написать свою пользовательскую функцию, например:

$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"blue");
$flip = array_flip_custom($a);

print_r($flip);
function array_flip_custom($a){
    $flip = array();
    foreach($a as $index=>$key){
        if($flip[$key]){
            $flip[$key] .= ','.$index;
        } else {
            $flip[$key] = $index;
        }
    }
    return $flip;
}

Вывести вывод:

Array ([red] => a [green] => b [ синий] => c, d)

0
ответ дан Manwal 19 August 2018 в 06:40
поделиться
Другие вопросы по тегам:

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