Объединение элементов массива с одинаковым значением

  • Автор темы DoctorD
  • Дата начала

DoctorD

Guest
Объединение элементов массива с одинаковым значением

есть массив $ar вида

$ar[0]['title'] = t0;
$ar[0]['price'] = p0;
...
$ar[N]['title'] = tN;
$ar[N]['price'] = pN;

как сделать так чтобы все элементы массива с одинаковым значением в поле 'title' объединились в один элемент, цены можно просто конкатенацией сливать через пробел
т.е.

if ($ar[k]['title'] == $ar[m]['title']) {
$ar[k]['title'] = $ar[k]['title'];
$ar[k]['price'] = $ar[k]['price']." ".$ar[m]['price'];
}

есть ли готовые ф-ции которые мне могут помочь?
 

neko

tеam neko
array_map

-~{}~ 03.08.04 09:13:

правда тут помощь минимальна
все равно ты ничего лучше чем каждое с каждым сравнить не сделаешь
 

DoctorD

Guest
neko
т.е. все ручками делать да? ... ну ладно ... пасибо
 

neko

tеam neko
да есть миллион функций для работы с массивами прочитай мануал в конце концов

и много способов эту процедуру упроситить
 

DoctorD

Guest
neko
ну допустим не миллион (если брать только из мана)
я думал может я какую просмотрел, которая сама все делает =)
 

neko

tеam neko
ты не с того конца полез наверняка
для начала всегда
откуда ты берешь данные?
 

DoctorD

Guest
на вход обработчику подаются 3 разных массива вида как я описал, там могут встречаться дублирование названий с разными ценами, вот и надо решить задачу которую я описал выше.
так что конец с которого я полез - как раз в тех 3х массивах =)
 

neko

tеam neko
кем подаются? офицантом?
так ты сделай другой заказ

я так предполагаю, что сейчас на протяжении 5-10 постов из тебя придется вытаскивать что-же-ты-там-такое-делаешь
поэтому делай лучше ручками!
 

bars_g

Guest
а если ввести дополнительный хэш типа $price_all где ключами делать поля ['title'] ?
что-то вроде

PHP:
if (isset($price_all[$ar[$i]['title']]))
{
     $price_all[$ar[$i]['title']].=", ".$ar[$i]['price'] ;
} 
else 
{ 
     $price_all[$ar[$i]['title']]=$ar[$i]['price'] ; 
};
а потом пользоваться этим хэшем вместо $ar[$i]['price']... не покатит?
 
Сверху