Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja przeszukująca stringa
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Witam serdecznie,
Mam taki blok danych:
  1. E|2014-10-26 04:00:00|usa|Chopin|<finish>
  2. C|26-10-2014 04:00:01|26-10-2014 05:00:00|2|1||dzisiaj|FULL||usa|Chopin|<finish>
  3. F|26-10-2014 04:00:01|usa|Chopin|<finish>
  4. D|26-10-2014 05:00:01|26-10-2014 15:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
  5. C|26-10-2014 15:00:01|26-10-2014 16:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
  6. D|26-10-2014 16:00:01|27-10-2014 02:00:00|2|1||jutro|FULL||usa|Chopin|<finish>


Na przykładzie drugiego wiersza: C|26-10-2014 04:00:01|26-10-2014 05:00:00|2|1||dzisiaj|FULL||usa|Chopin|<finish>
Oznacza że pojazd będzie poruszał się w godzinach od 26-10-2014 04:00:01 do 26-10-2014 05:00:00

Na przykładzie czwartego wiersza: D|26-10-2014 05:00:01|26-10-2014 15:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
Oznacza że pojazd będzie się poruszał od 26-10-2014 05:00:01 do 26-10-2014 15:00:00.

Wiesz E|2014-10-26 04:00:00|usa|Chopin|<finish> - oznacza że pojazd stoi.

Potrzebuję funkcję która przeszuka powyższego stringa i wyszuka blok danych najbliższego wskazanej dacie.
Czyli np. szukam daty 26-10-2014 05:00:01 - to zwróci mi blok: C|26-10-2014 15:00:01|26-10-2014 16:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>


Umiałby ktoś coś takiego napisać?

Bardzo proszę o pomoc,
Northwest
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
tzm
post
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


  1. <?php
  2.  
  3. $string = "E|2014-10-26 04:00:00|usa|Chopin|<finish>
  4. C|26-10-2014 04:00:01|26-10-2014 05:00:00|2|1||dzisiaj|FULL||usa|Chopin|<finish>
  5. F|26-10-2014 04:00:01|usa|Chopin|<finish>
  6. D|26-10-2014 05:00:01|26-10-2014 15:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
  7. C|26-10-2014 15:00:01|26-10-2014 16:00:00|1|2||dzisiaj|FULL||usa|Chopin|<finish>
  8. D|26-10-2014 16:00:01|27-10-2014 02:00:00|2|1||jutro|FULL||usa|Chopin|<finish>";
  9.  
  10. $rows = explode("<finish>", $string);
  11. $searchData = '26-10-2014 05:00:01';
  12. for( $i = 0; $i < count($rows); $i++){
  13. $x[$i] = explode("|", $rows[$i]);
  14. if($x[$i][1] == $searchData){
  15. echo '<pre>';
  16. var_dump($x[$i]);}
  17. }
  18.  
  19. ?>


z palca na szybkości, dawno php nie widziałem ale na pewno Ci pomoże
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





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

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


tzm to znajdzie rekord z dokładną datą, a jemu chodzi o dowolnie najbliższą (w przeszłość też?)

To jest troszkę więcej roboty (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
tzm
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Sorki, nie doczytałem... zaraz zrobię edita.
Go to the top of the page
+Quote Post
northwest
post
Post #5





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


dziękuję bardzo za pomoc (IMG:style_emoticons/default/smile.gif) Działa to prawie tak, jak potrzebuję (IMG:style_emoticons/default/smile.gif) )

Nie wyszukuje jednak do końca tak jakbym chciał… Przykładowo dodaję poszukiwany string:
26-10-2014 18:10:01

I nic nie znajduje - a powinien pierwszy wiersz: D|26-10-2014 16:00:01|27-10-2014 02:00:00|2|1||jutro|FULL||usa|Chopin|


Czy dałoby się rozszerzyć to o to, że dla stringów poprzedzonych E lub F (np. E|2014-10-26 04:00:00|usa|Chopin|)
jako parametr daty od przyjmowałby 00:00:00 wybranego dnia (czyli dla E|2014-10-26 04:00:00|usa|Chopin| funkcja szukająca widziałaby wtedy
E|2014-10-26 00:00:00|2014-10-26 04:00:00|usa|Chopin|)?

Ten blok znaków przy wartościach z E i F chyba warto rozszerzyć z E|2014-10-26 04:00:00|usa|Chopin| na E||2014-10-26 04:00:00|usa|Chopin|
prawda? (IMG:style_emoticons/default/smile.gif)

Idealnie byłoby gdyby ta funkcja zwracała 2 informacje:
a) czy jest w tym przedziale jakiś przejazd
(IMG:style_emoticons/default/cool.gif) najbliższy przejazd we wskazanej dacie (zarówno w przyszłości jak i w przeszłości)
Go to the top of the page
+Quote Post
tzm
post
Post #6





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Aha, to zmienia postać rzeczy, ja tu kminie w głowie od wczoraj jak policzyć najbliższy przejazd na podstawie porównania dat a wg tego co dobrze teraz rozumiem wystarczy znaleźć przejazd w przedziale a-b a nie porównania a-a, dobrze rozumiem? to łatwe do napisania powinno być.
Go to the top of the page
+Quote Post
northwest
post
Post #7





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

Ostrzeżenie: (10%)
X----


Tzn to są dane postojów i przejazdów (IMG:style_emoticons/default/smile.gif)
Potrzebuję uzyskać 2 informacje za każdym porównaniem:
1. czy jest jakiś przejazd w wybranej dacie
2. jaki jest najbliższy przejazd w przyszłości i przeszłości (jak by się dało sprawdzić w 2 strony to byłoby super)
(w odpowiedzi chce otrzymać odpowiedni ciąg znaków)

(IMG:style_emoticons/default/smile.gif)

Rozumiesz o co chodzi z tymi literkami D,E i F?
Dziękuję bardzo za pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował northwest 24.10.2014, 11:15:37
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:28