Уважаемые посетители портала Kamensk.NET! Напоминаем вам, что будучи зарегистрированным пользователем вы получаете возможность оставлять комментарии к новостям на сайте и к топикам на форуме, иметь доступ к скрытым разделам и много других благ и привелегий. Пожалуйста заполните регистрационную форму, это отнимет у вас всего лишь несколько минут вашего времени.

Объединение массивов по общему полю (PHP)

Ne01eX
Ne01eX аватар
User offline. Last seen 6 дней 20 часов ago. Не в сети
Зарегистрирован: 12.02.2006
Сообщения:

Есть, скажем, 3 массива, полученных в результате выборки из MySQL базы данных. У каждого массива есть по одному общему полю. Например (упрощённо):

Игрушки 2 | Игрушки 6.30 | Цена 6.30
Фломастеры 3 | Фломастеры 8.50 | Цена 8.50

Хочется получить что-то типа:

2 Игрушки Цена 6.30
3 Фломастеры Цена 8.50

Конечно их можно слить ещё на стадии выборки из БД, но может есть какие-то штатные средства для работы с массивами?

Протянув руку помощи, не забудь разжать кулак.

Ne01eX
Ne01eX аватар
User offline. Last seen 6 дней 20 часов ago. Не в сети
Зарегистрирован: 12.02.2006
Сообщения:

Протянув руку помощи, не забудь разжать кулак.

Real Alex
Real Alex аватар
User offline. Last seen 35 недель 18 часов ago. Не в сети
Зарегистрирован: 06.02.2006
Сообщения:

Массивы такие:

$array1=array (
	"Игрушки" => "2",
	"Фломастеры" => "3",
);

$array2=array (
	"Игрушки" => "6.30",
	"Фломастеры" => "8.50",
);

$array3=array (
	"Цена" => "6.30",
	"Цена" => "8.50",
);

Третий не правильный т.к. ключ должен быть уникальным.

Пусть тогда для примера будет наоборот:

$array3=array (
	"6.30" => "Цена",
	"8.50" => "Цена",
);

Для твоего примера объединять массивы нет необходимости, можно все сделать проще:

foreach ($array1 as $key => $value)
{
	$i=$array2[$key];

	echo $value . " " . $key . " " . $i . " " . $array3[$i];
}

Для объединения массивов есть функция array_merge
Например для 1 и 2 массивов она будет работать так:

$result_array=array_merge($array1,$array2);

/*
	Результат будет:

	"Игрушки" => "6.30",
	"Фломастеры" => "8.50",
*/

Еще есть array_merge_recursive но я так сходу не скажу подойдет ли она сюда, надо RTFM Smile