Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak "przefiltrować" tablicę ?
tomzoll
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


Witam serdecznie. Zmagam się z takim tematem i nie mogę sobie poradzić sad.gif
Mianowicie jest taka sytuacja:
Mam tablicę w której skład wchodzą elementy: Latitude, Longitude, StartTime, StopTime, Numer. Wartości wpisów sobie pogrupowałem wg elementu "Numer". Chciałbym osiągnąć taki efekt aby na podstawie źródłowej tablicy utworzyć nową tablicę która będzie zawierać pola:
1. Jeśli w tablicy źródłowej jest jeden wpis z danym 'Numerem' to należy go przepisać do nowej tablicy
2. Jeśli w tablicy źródłowej jest więcej niż jeden wpis z taką samą wartością pola 'Numer' to należy w nowej tablicy utworzyć nowy element, zawierający pola 'Latitude', 'Longitude', 'StartTime' z wartościami z pierwszego w kolejności wpisu z danym 'Numerem' i jednocześnie z polem 'StopTime' o wartości z ostatniego napotkanego wpisu z tym samym 'Numerem'.
Jednym słowem chciałbym aby z tej źródłowej tablicy:
Kod
array(23) {
  [0]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5766784"
    ["Longitude"]=>
    string(9) "2.2192276"
    ["StartTime"]=>
    string(19) "2015-10-01 08:02:18"
    ["StopTime"]=>
    string(19) "2015-10-01 08:05:18"
    ["Numer"]=>
    int(2)
  }

  [1]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5767616"
    ["Longitude"]=>
    string(9) "2.2194676"
    ["StartTime"]=>
    string(19) "2015-10-01 08:28:02"
    ["StopTime"]=>
    string(19) "2015-10-01 08:29:02"
    ["Numer"]=>
    int(33)
  }
  [2]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5767616"
    ["Longitude"]=>
    string(9) "2.2194676"
    ["StartTime"]=>
    string(19) "2015-10-01 08:29:02"
    ["StopTime"]=>
    string(19) "2015-10-01 08:31:50"
    ["Numer"]=>
    int(33)
  }
  [3]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5767616"
    ["Longitude"]=>
    string(9) "2.2194676"
    ["StartTime"]=>
    string(19) "2015-10-01 08:31:50"
    ["StopTime"]=>
    string(19) "2015-10-01 08:31:51"
    ["Numer"]=>
    int(33)
  }


uzyskać taką tablicę:
Kod
array(23) {
  [0]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5766784"
    ["Longitude"]=>
    string(9) "2.2192276"
    ["StartTime"]=>
    string(19) "2015-10-01 08:02:18"
    ["StopTime"]=>
    string(19) "2015-10-01 08:05:18"
    ["Numer"]=>
    int(2)
  }

  [1]=>
  array(5) {
    ["Latitude"]=>
    string(10) "41.5767616"
    ["Longitude"]=>
    string(9) "2.2194676"
    ["StartTime"]=>
    string(19) "2015-10-01 08:28:02"
    ["StopTime"]=>
    string(19) "2015-10-01 08:31:51"
    ["Numer"]=>
    int(33)
  }



Z góry dziękuję za pomoc.
Poniżej fragment tablicy.
Pozdrawiam smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Foreach,kilka IF i jedziesz.
Go to the top of the page
+Quote Post
tomzoll
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


Tak wiem, próbuje cały czas z Foreach i IF-ami, ale mi same glupoty wychodzą sad.gif
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Lec po starej tablicy i na podstawie starej tablicy tworz zupelnie nowa tablice. Znaczy ta nowa tablica ma miec strukture co chcesz, tylko bedzie zawierala juz pogrupowane dane.
Jesli w nowej tablicy nie ma danego numer ze starej, to tworz go w nowej
Jesli w nowej tablicy jest numer ze starej, to zupdatuj tylko dany element w nowej.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomzoll
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


Czy mógłbym prosić o pomoc na jakimś przykładzie ? Nie chodzi mi o gotowy kod smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Hm... opis ktore podalem wyzej to naprawde dwa IF. Czego w nim nie rozumiesz, to wytlumacze ci jasniej smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomzoll
post
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


1. (Pierwszy IF) Nie wiem jak skopiować element z jednej tablicy wielowymiarowej do drugiej oraz przed skopiowaniem jak sprawdzić czy taki element istnieje smile.gif
2. (Drugi IF) Nie wiem jak zupdatować wartość istniejącego elementu w drugiej tablicy smile.gif
Dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jak sprawdzic?
Tworzac elementy w nowej tablicy, jako indekx nadajesz jest wartosc numer ze starej tablicy
$nowa[$starynumer] = blabla
A potem sprawdzasz:
if (isset($nowa[$starynumer])) { //jest
} else { //nie ma
}

Jak skopiowac?
$nowa[$starynumer] = $aktualnyelement_z_petli_po_starej;

Jak update?
$nowa[$starynumer]['Latitude'] = 'nowa wartosc';
itd. z innymi polami.

smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomzoll
post
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


a jak to zrobić w przypadku tablicy wielowymiarowej? bo tutaj będę miał taki przypadek sad.gif
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No wlasnie to co ci podalem to jest wlasnie wielowymiarowa

Tablica wielowymiarowa niczym sie nie rozni od jednowymiarowej. Obie to tablice, obie maja indeksy.
Jedyne co to w wielowymiarowej zamiast pojedynczej wartosci masz kolejna tablice ot co.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
tomzoll
post
Post #11





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 19.09.2011

Ostrzeżenie: (0%)
-----


Wielie dzięki. Wszystko działa jak należy:)
Pozdrawiam smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:27