Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja przeszukująca stringa
Forum PHP.pl > Forum > Gotowe rozwiązania
northwest
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
tzm
  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
Pyton_000
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 smile.gif
tzm
Sorki, nie doczytałem... zaraz zrobię edita.
northwest
dziękuję bardzo za pomoc smile.gif Działa to prawie tak, jak potrzebuję 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? smile.gif

Idealnie byłoby gdyby ta funkcja zwracała 2 informacje:
a) czy jest w tym przedziale jakiś przejazd
cool.gif najbliższy przejazd we wskazanej dacie (zarówno w przyszłości jak i w przeszłości)
tzm
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ć.
northwest
Tzn to są dane postojów i przejazdów 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)

smile.gif

Rozumiesz o co chodzi z tymi literkami D,E i F?
Dziękuję bardzo za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.