RussianMan
@RussianMan

Как объеденить строки массива?

БД содержит записи в стиле:

Array ( [id] => 1 [data] => 03.03.15 09:28:46 [latitude] => 49.23342514 [longitude] => 28.40869522 [ppm] => ppm= ) 
Array ( [id] => 2 [data] => 03.03.15 09:28:46 [latitude] => 49.23342514 [longitude] => 28.40869522 [ppm] => 701 ) 
Array ( [id] => 3 [data] => 03.03.15 09:28:47 [latitude] => 49.23335648 [longitude] => 28.40859604 [ppm] => ppm ) 
Array ( [id] => 4 [data] => 03.03.15 09:28:47 [latitude] => 49.23335648 [longitude] => 28.40859604 [ppm] => =679 ) 
Array ( [id] => 5 [data] => 03.03.15 09:28:48 [latitude] => 49.23325729 [longitude] => 28.40863609 [ppm] => pp ) 
Array ( [id] => 6 [data] => 03.03.15 09:28:48 [latitude] => 49.23325729 [longitude] => 28.40863609 [ppm] => m=65 ) 
Array ( [id] => 7 [data] => 03.03.15 09:28:48 [latitude] => 49.23325729 [longitude] => 28.40863609 [ppm] => 6 )


На выходе нужно получить такое:

Array ( [id] => 1 [data] => 03.03.15 09:28:46 [latitude] => 49.23342514 [longitude] => 28.40869522 [ppm] => ppm=701 ) 
Array ( [id] => 3 [data] => 03.03.15 09:28:47 [latitude] => 49.23335648 [longitude] => 28.40859604 [ppm] => ppm=679) 
Array ( [id] => 5 [data] => 03.03.15 09:28:48 [latitude] => 49.23325729 [longitude] => 28.40863609 [ppm] => ppm=656 )


т.е. объеденить то, что находится в столбце ppm по общему столбцу data
как это реализовать? не могу придумать
  • Вопрос задан
  • 2311 просмотров
Пригласить эксперта
Ответы на вопрос 5
saksmt
@saksmt
PHP-developer, Backend
А ещё проще - сразу классами хранить или на этапе выборки фильтровать.
<?php

class GeoPosition {
	private $data;

	public function __construct(array $data)
	{
		$this->data = $data;
	}

	public function getData()
	{
		return $this->data;
	}

	public function __toString()
	{
		return $data['data'];
	}
}

/** @var array[] $dbResponse */
$normalizedData = array_map(function (array $geoPosition) {
	return new GeoPosition($geoPosition);
}, $dbResponse);

$filteredData = array_unique($normalizedData, SORT_STRING);
$denormalized = array_map(function (GeoPosition $geoPosition) {
	return $geoPosition->getData();
}, $filteredData);
Ответ написан
Комментировать
kompi
@kompi
nullstack devoops
if(($length = count($arr)) > 1)
		for($i = 1, $row = $arr[0]; $i < $length; $i++) {
			if($row['data'] === $arr[$i]['data'])
				$arr[$i]['ppm'] = $row['ppm'] . $arr[$i]['ppm'];
			else
				$row = $arr[$i];
		}
Ответ написан
mnjghgmjyt
@mnjghgmjyt
php it бот сети
сразу нормальною бд пректировать...
Ответ написан
@iSensetivity
бухгалтер, програміст-самоук
prototype_denis
@prototype_denis
Symfony
// $array = [ ['id' => 1...
$result = [];
foreach ($array as $item) {
    if (isset($result[$item['data']])) {
        $result[$item['data']]['ppm'] .= $item['ppm'];
    } else {
        $result[$item['data']] = $item;
    }
}
$result = array_values($result);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы