[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединить массивы в массиве...
odlf3
Всем привет! Помогите плз...
есть:
Array
(
[0] => Array
(
[id] => 1
[title] => Автосалон BMW
)

[1] => Array
(
[id] => 1
[car] => x6
)

[2] => Array
(
[id] => 2
[title] => Автосалон opel
)
[3] => Array
(
[id] => 2
[car] => astra
)
)

надо:

Array (
[0] => Array (
[id] => 1
[title] => Автосалон BMW
[car] => x6
)
[1] => Array (
[id] => 2
[title] => Автосалон opel
[car] => astra
)
)
Winston
Как-то так :)

$result = array();
foreach($array as $items) {
if(isset($result[$items['id']])) {
$result[$items['id']] += $items;
} else {
$result[$items['id']] = $items;
}
}

$result = array_values($result);
echo '<pre>' . print_r($result, 1) . '</pre>';
Valick
odlf3, такие вещи решаются на уровне СУРБД
таблицы я так понимаю разные, следовательно запрос с соединением


_____________
Стимулятор ~yoomoney - 41001303250491
odlf3
Круто, спасибо большое!..
Вопрос оптимизации, чтоб ресурсы не насиловать. Изначально приходил массив иного характера, но я его подправил...
Был:

Array
(
[0] => Array
(
[name] => title_1
[value] => Автосалон BMW
)

[1] => Array
(
[name] => car_1
[value] => x6
)

[2] => Array
(
[name] => title_2
[value] => Автосалон opel
)

[3] => Array
(
[name] => car_2
[value] => astra
)
)

Изменил так:

for ($i = 0; $i < count($array); $i++) {
foreach ($array[$i] as $key=>$value) {
if($key == 'name') {
$new = explode("_", $value);
$array[$i]['id'] = $new[1];
unset($array[$i][$key]);
}else if($key == 'value'){
$array[$i][$new[0]] = $value;
unset($array[$i][$key]);
}
}
}

потом ваш код:

$result = array();
foreach($array as $items) {
if(isset($result[$items['id']])) {
$result[$items['id']] += $items;
} else {
$result[$items['id']] = $items;
}
}
$result = array_values($result);
print_r($result);

Вопрос, можно ли объединить эти фокусы как нибудь в один foreach?
Valick
Цитата
Вопрос, можно ли объединить эти фокусы как нибудь в один foreach?

можно объединить и выкинуть...
покажите как к вам попадает изначальный массив

_____________
Стимулятор ~yoomoney - 41001303250491
odlf3
этот массив приходит с ajax с таблицы по функции $('form#sale').serializeArray();
name и value - это значение тегов из input...
Valick
я спросил про запрос к БД, покажите сам запрос

_____________
Стимулятор ~yoomoney - 41001303250491
odlf3
Было бы намного проще если бы serializeArray() передавал значение id например, но...
odlf3
к БД запросов нет, я как-раз подготавливаю адекватный массив, чтоб сохранить эти данные...
Valick
Цитата
этот массив приходит с ajax с таблицы по функции $('form#sale').serializeArray();

Цитата
к БД запросов нет

это у вас парсер? вы лямзите контент с чужого сайта?


_____________
Стимулятор ~yoomoney - 41001303250491
odlf3
нет, с моего сайта...
odlf3
чтоб страница не перегружалась, сделал на ajax и передаю в php значения формы через команду serializeArray()....
ИНСИ
Я бы посоветовал САМОМУ формировать обьект (JS) перед отправкой на сервер. Пример:
var arr = {
1 : {id : 1, title : 'Автосалон BMW', car : 'x6' },
2 : {id : 2, title : 'Автосалон opel', car : 'astra'}
}

Ну и PHP
foreach ($_POST['arr'] as $val) {
// $val - хранит id, title, car
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.