PHP группировка по значению данных - PullRequest
0 голосов
/ 28 сентября 2011

Моя переменная данных:

1=icon_arrow.gif,2=icon_arrow.gif,3=icon_arrow.gif

Мне нужно, чтобы она была сгруппирована по значению после =, поэтому в этом случае она должна выглядеть следующим образом:

$out = array('icon_arrow.gif' => '1, 2, 3');

Значок icon_arrowПоле .gif 'должно быть уникальным и не может повторяться.

Как это можно сделать?

Ответы [ 2 ]

3 голосов
/ 28 сентября 2011

Инициализировать массив:

$array = array();

Разбить входные данные на ,, сохранить результаты в виде массива на основе подразделяемого на =:

foreach(explode(',', $string) as $p)
{
   list($i, $n) = explode('=',$p);
   $array[$n][] = $i;
}

Затем взорвать результат с ,:

foreach($array as &$v)
    $v = implode(', ', $v);
unset($v);

Готово.

2 голосов
/ 28 сентября 2011

Просто для удовольствия.Без специальных символов это также должно работать.

$str="1=icon_arrow.gif,2=icon_arrow.gif,3=icon_arrow.gif,4=x.gif";

$str = str_replace(',', '&', $str);
parse_str($str, $array);
$result = array();
foreach($array as $k=>$v)
    $result[$v] = (isset($result[$v]) ? $result[$v] . ", " : "") . $k;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...