Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dodawanie do elementów w tablicy
Forum PHP.pl > Forum > Przedszkole
ichu
Kolejny problem... Pomocy!
Mam taką tablicę:

  1. <?php
  2. $sgp[1]="5:45";
  3. $sgp[2]="11:00";
  4. $sgp[3]="13:55";
  5. $sgp[4]="15:25";
  6. $sgp[5]="18:55";
  7. $sgp[6]="20:05";
  8. $sgp[7]="21:25";
  9. ?>


Jej rekordy to czasy (godzina:minuty). Jak zrobić, by pobierać te wartości powiększone o określoną ilość minut? Np. żeby w jednym pliku wszystkie te wartości były powiększone o 5 minut, a w innym o 7 minut? Przeglądałem forum i manuala, ale nie potrafiłem nic sklecić ze znalezionych wskazówek sad.gif
skowron-line
  1. <?php
  2. $sgp[1]="5:45";
  3. $sgp[2]="11:00";
  4. $sgp[3]="13:55";
  5. $sgp[4]="15:25";
  6. $sgp[5]="18:55";
  7. $sgp[6]="20:05";
  8. $sgp[7]="21:25";
  9.  
  10. $array = array_merge($sgp);
  11.  
  12. foreach($array as $key =>$value){
  13. $explode = explode(":","$value");
  14. echo "before: <b> $explode[0] $explode[1]</b> ";
  15. $explode[1] = ($explode[1]+5);
  16. if($explode[1] >= 60){
  17. $explode[0] = ($explode[0] + 1);
  18. $explode[1] = 00;
  19. }
  20. echo"after:$explode[0] $explode[1]<br>";
  21. }
  22. ?>

jesli to o to chodzi??

edit: uwzglednienie zmiany godziny
ichu
Hmm... Wkleiłem ten kod do strony i dostałem takie coś:
before: 45 after: 50
before: 00 after: 5
before: 55 after: 60
before: 25 after: 30
before: 55 after: 60
before: 05 after: 10
before: 25 after: 30

:| Nie kumam w ogóle tych wyników :/

Chodzi o to, że jest to rozkład jazdy dla danego kursu. Każdy plik, będący rozkładem dla kolejnych przystanków powinien pobrać te dane i zwiększyć każdy rekord o konkretną ilość minut (wartości początkowe są dla pierwszego przystanku. W każdym pliku mam np.
  1. <? echo $sgp[5]; ?>
i tak dalej. Chciałbym zrobić tak, żeby zmieniać tylko jeden współczynnik w każdym pliku, a skrypt już automatycznie powiększał każdy rekord o odpowiednią ilość minut...
skowron-line
Cytat(ichu @ 27.08.2006, 16:25 ) *
before: 45 after: 50
before: 00 after: 5
before: 55 after: 60
before: 25 after: 30
before: 55 after: 60
before: 05 after: 10
before: 25 after: 30

:| Nie kumam w ogóle tych wyników :/

to sa minuty przed i po dodaniu 5 minut.
a dobrze rozumien ty chcesz zeby skrypt otwieral plik(plik.txt) i dodawal 5 min do wszystkich elementow tablicy??
ichu
No mniej więcej o to by mi chodziło smile.gif

Już rozumiem te wyniki, tylko jeszcze pojawia się problem: żeby php rozpoznawało to jako czas... Zauważ że nie ma godziny 5:60. Czy może napisać jakąś funkcję która zamieniała by 60 na 00 i dodawała 1 do godziny?

if (explode[1] >= 60)
{
explode[1] - 60;
explode[0] + 1;
}

A może da się jakoś prościej?
skowron-line
tez o tym pomyslalem i edytowalem post wyzej
ichu
OK, dzieki wielkie, jestem już blisko, ale... Jak to teraz z powrotem poskładać by $sgp[01] i kolejne były wyświetlone jako nowe, powiększone wartości? Próbowałem z implode, ale chyba nie ta kombinacja :/

  1. <?php
  2.  
  3. $array = array_merge($sgp);
  4. $odleglosc= 6;
  5.  
  6. foreach($array as $key =>$value){
  7. $explode = explode(":","$value");
  8. $explode[1] = ($explode[1]+$odleglosc);
  9. if($explode[1] >= 60){
  10. $explode[0] = ($explode[0] + 1);
  11. $explode[1] = 00;
  12. }
  13. echo"after:$explode[0] $explode[1]<br>";
  14. }
  15.  
  16. $sgp= implode(":", $array);
  17.  
  18. ?>
skowron-line
wstaw poprostu dwukropek pomiedzy explode[0] a explode[1] i bedzie po krzyku
ichu
Obawiam się że dwukropek nic nie da... Muszę chyba znowu połączyć te explode[0] i explode[1] żeby skrypt odczytał $sgp czyli zawartość tablicy jako wartości powiększone? Tylko jak skonstruować teraz to polecenie :/ Nie chcę wypisywać after: godzina bo mam już przygotowane odwołania w pliku...
skowron-line
wiesz nie wiem jaka masz konstrukcje pliku .txt ale jesli jest taka
  1. <?php
  2. $sgp[1]="5:45";
  3. $sgp[2]="11:00";
  4. $sgp[3]="13:55";
  5. $sgp[4]="15:25";
  6. $sgp[5]="18:55";
  7. $sgp[6]="20:05";
  8. $sgp[7]="21:25";
  9. ?>


to kicha moim zdaniem lepiej be bylo moim zdaniem jesli to beda poprostu godziny
12:00 itp

ale to tylko moje zdanie
ichu
No właśnie tak mam niestety, a może i stety, bo tak sobie rozplanowałem architekturę tego wszystkiego, żeby uwzględnić wszystkie zależności, i przy okazji żeby nie wykraczało to poza moją i tak słabą znajomość php... Wszystko jest już OK, pozostało tylko z powrotem połączyć elementy tabeli, żeby można było zastosować:

  1. <? echo $sg[1]; ?>


EDIT:
Problem rozwiazany, okazało się że w skrypcie jest na początku kilka błędów.
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-2025 Invision Power Services, Inc.