Нужно объединить значения с одинаковыми id. Есть массив:
$data = Array (
0 => Array ('id' => 11, 'description' => Array(Array('text' => 'yellow'))),
1 => Array ('id' => 11, 'description' => Array(Array('text' => 'red'))),
2 => Array ('id' => 22, 'description' => Array(Array('text' => 'green'))),
);
Нужно получить:
$data = Array (
0 => Array ('id' => 11, 'description' => Array(Array('text' => 'yellow, red'))),
1 => Array ('id' => 22, 'description' => Array(Array('text' => 'green'))),
);
Подскажите, пожалуйста, как это можно реализовать?
Можно воспользоваться техникой reduce-map:
Пример с чуть более простой структурой:
$data = [
['id' => 111, 'text' => 'yellow'],
['id' => 111, 'text' => 'red'],
['id' => 112, 'text' => 'green'],
];
$result = array_map(function($item) {return [
'id' => $item['id'],
'text' => implode(', ', $item['colors']),
];}, array_reduce($data, function($reduced, $item){
if (!isset($reduced[$item['id']])) $reduced[$item['id']] = $item;
$reduced[$item['id']]['colors'][] = $item['text'];
return $reduced;
}, []));
3v4l demo
Так не делают
$data=array(
array("id"=>"111","description"=>array(array(
"text"=>"голубой"))
),
array("id"=>"111","description"=>array(array(
"text"=>"желтый"))
),
array("id"=>"112","description"=>array(array(
"text"=>"yellow"))
),
array("id"=>"112","description"=>array(array(
"text"=>"green"))
));
foreach ($data as $key => $value) {
$ser=$value['id'];
for($i = 1; $i<count($data); $i++){
if($ser==$data[$i]['id']){
array_push($data[$i-1]['description'][0],$value['description'][0]['text'] );
}
}
}
print_r($data);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
нужна помощь знатока prestashopВозможно есть где то информация или кто то может помочь, в том как можно вывести в письме (в котором выводиться...