У меня есть массив, который составлен. Это в основном 24 точки данных на 7 станциях. Каждая станция имеет точку данных каждый час, и для каждой точки данных создается новый подмассив. Проблема в том, что теперь я хочу разделить данные по станциям, чтобы я мог их отсортировать. Когда я иду, чтобы сделать это array_filter не работает для меня. Я хотел объединить все значения с одинаковым результатом строки 0 в каждом подмассиве. но держите каждую точку данных на их основе. Строка 0 — это название станции. Вот пример того, как выглядит массив. Есть 160 подмассивов. Все, что мне нужно сделать, это объединить их вместе на основе названия станции. Я собирался сделать это на основе значения Array, но проблема в том, что если точка данных отсутствует, это нарушает эту логику.
Array
(
[0] => Array
(
[0] => STATIONONE
[1] => 02/22/15 04:00:00 PM
[2] => SW
[3] => Array
(
[0] => 4.51
)
[4] => MPH
[5] => Array
(
[0] => 16.1
)
[6] => MPH
)
[1] => Array
(
[0] => STATIONONE
[1] => 02/22/15 05:00:00 PM
[2] => S
[3] => Array
(
[0] => 2.7
)
[4] => MPH
[5] => Array
(
[0] => 9.61
)
[6] => MPH
)
И это просто повторяется, пока у меня не будет 23 значения. Затем следующая станция.
Так что значение 0-22 подмассива = станция 1
23-45 значение подмассива = станция 2
и т.д .. просто заявляю, чтобы помочь показать, что я пытаюсь сделать.
Не совсем понятно, какой результат вы ожидаете получить, но вы можете получить это:
$entriesByStation = []
foreach ($entries as $entry) {
$entriesByStation[$entry[0]] = $entry;
}
Это сгруппирует все записи по названию станции в $entriesByStation
массив
Принятый ответ помог мне понять это. Я должен был сделать это на станции, хотя. Поэтому я просто создал 7 операторов foreach и создал массив для каждой станции. Таким образом, я также могу объединить массив при необходимости.
# Parse our All Data and set station
foreach ($array as $entry) {
if ($entry[0] === "STATIONONE"){
$S1pkwsite = ($entry[0]);
$S1pkwvalue = ($entry[5][0]);
$S1pkwdate = ($entry[1]);
$S1pkwunit = ($entry[6]);
$S1wspvalue = ($entry[3][0]);
$S1wspunit = ($entry[4]);
$S1wdrvalue = ($entry[2]);
$S1pkwdataarray[] = array('SiteName'=>$S1pkwsite,'DATE'=>$S1pkwdate,'WDR'=>$S1wdrvalue,'VALUE'=>$S1pkwvalue,'UNIT'=>$S1pkwunit);
}
}array_push ($Stationone_data, $pkwdataarray);
$Stationone_data = array_shift($Stationone_data);