2013-12-03 4 views
0

У меня есть массив, как этотarray_flip ключевого значения для буквы и цифры

array(123=>'c', 125=>'b', 139=>'a', 124=>'c', 135=>'c', 159=>'b'); 

и я хочу, чтобы перевернуть ключ/значение, так что повторяющиеся значения становятся индекс для массива.

array(
    'a'=>array(139), 
    'b'=>array(125, 159), 
    'c'=>array(123, 124, 135) 
); 

Однако array_flip кажется перезаписать ключи и array_chunk только разделяет его на основе числовых значений.

Любые предложения?

+0

Да, написать свой собственный метод флипа – kero

ответ

1
function array_flop($array) { 
    foreach($array as $k => $v) { 
     $result[$v][] = $k; 
    } 
    return array_reverse($result); 
} 
+0

Отказываясь от ответа Роба Бэйли в функциональной форме ... Его не будут бросать неопределенные индексы, как и ваши. (не будет -1 вы, потому что это ** ** полезный ответ) –

+0

Wow, очень элегантный! – tester2001

+0

@scrowler: ничего не «пересказывал». Когда я отправил сообщение, ответа не было. Также, проявите осторожность, чтобы показать пример выполнения, где есть какие-либо уведомления? – AbraCadaver

2

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

$flippedArray = array(); 

foreach($arrayToFlip as $key => $value) { 

    if (!array_key_exists($value, $flippedArray) { 
    $flippedArray[ $value ] = array(); 
    } 
    $flippedArray[ $value ][] = $key; 

} 
+1

Это больше походит на комментарий, чем ответ добавленного – kero

+1

Ответа - случайное сохранение. –

Смежные вопросы