Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dopisywanie zera do liczby jednocyfrowej, czyli jak używać funkcji sprintf
ichu
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.08.2006

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


Mam taki oto skrypt który pobiera z tablicy czasy w formacie hh:mm, a następnie powiększa je o daną liczbę minut ($odleglosc). Problem w tym, że jeśli mamy np. godzinę 9:06 to skrypt zapisuje to jako 9:6. Jak mam użyć funkcji sprintf i w którym miejscu żeby wyświetlało mi 9:06 (ale nie 09:06)?

  1. <?php
  2. foreach($idkursu as $key =>$value)
  3. {
  4. $explode = explode(":","$value");
  5. $explode[1] = ($explode[1]+$odleglosc);
  6. if($explode[1] >= 60){
  7. $explode[0] = ($explode[0] + 1);
  8. $explode[1] = ($explode[1] - 60);
  9. $explode[1] = sprintf("%0s",$explode[1]);
  10. }
  11. $after=implode (':', $explode);
  12. $idkursu[$key]=$after;
  13. }
  14. return $idkursu;
  15. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. foreach($idkursu as $key=>$value)
  3. {
  4. $explode = explode(':', $value);
  5.  
  6. if ($explode[1] < 10)
  7. $explode[1] = '0'.$explode[1];
  8.  
  9. $idkursu[$key] = implode(':', $explode);;
  10.  
  11. }
  12. return $idkursu;
  13. ?>

ale czy nie lepiej od razu:
  1. <?php echo date("g:i"); ?>

questionmark.gif
Polecam zapozananie sie z: http://pl2.php.net/manual/pl/function.date.php
Go to the top of the page
+Quote Post
php programmer
post
Post #3





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


przepisane z manuala
  1. <?php
  2. $isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
  3. ?>
Go to the top of the page
+Quote Post
ichu
post
Post #4





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.08.2006

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


Trochę dałem ciała, mogłem wstawić cały skrypt :/
Wygląda to tak:

  1. <?php
  2. // Tablica z poszczególnymi godzinami, identyfikatory są różne, np $dmp, $sgp
  3.  
  4. $sgp[0]="5:20";
  5. $sgp[1]="11:00";
  6. $sgp[2]="13:55";
  7. $sgp[3]="15:00";
  8. $sgp[4]="19:40";
  9. $sgp[5]="21:00";
  10.  
  11. function dodawanie($idkursu, $odleglosc)
  12. {
  13. foreach($idkursu as $key =>$value)
  14. {
  15. $explode = explode(":","$value");
  16. $explode[1] = ($explode[1]+$odleglosc);
  17. if($explode[1] >= 60){
  18. $explode[0] = ($explode[0] + 1);
  19. $explode[1] = ($explode[1] - 60);
  20. }
  21. $after=implode (':', $explode);
  22. $idkursu[$key]=$after;
  23. }
  24. return $idkursu;
  25. }
  26.  
  27. $sgp=dodawanie($sgp, 2); // Dodajemy 2 minuty do każdego elementu tablicy
  28.  
  29. echo $sgp[1]; // Wypisuje wartość dla danego elementu powiększonego o daną liczbę minut
  30. ?>


Chodzi o to, że skrypt nie wypisuje np. 12:01 tylko 12:1, 20:2 a nie 20:02 itd...

Ten post edytował ichu 28.08.2006, 11:01:28
Go to the top of the page
+Quote Post
babejsza
post
Post #5





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

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


  1. <?php
  2. // Tablica z poszczególnymi godzinami, identyfikatory są różne, np $dmp, $sgp
  3.  
  4. $sgp[0]="5:20";
  5. $sgp[1]="11:00";
  6. $sgp[2]="13:55";
  7. $sgp[3]="15:00";
  8. $sgp[4]="19:40";
  9. $sgp[5]="21:00";
  10.  
  11. function dodawanie($idkursu, $odleglosc)
  12. {
  13. foreach($idkursu as $key =>$value)
  14. {
  15. $explode = explode(":","$value");
  16. $explode[1] = ($explode[1]+$odleglosc);
  17. if($explode[1] >= 60){
  18. $explode[0] = ($explode[0] + 1);
  19. $explode[1] = ($explode[1] - 60);
  20. }
  21. if($explode[1] < 10) $explode[1] = "0".$explode[1];
  22. $after=implode (':', $explode);
  23. $idkursu[$key]=$after;
  24. }
  25. return $idkursu;
  26. }
  27.  
  28. $dmp=dodawanie($sgp, 2); // Dodajemy 2 minuty do każdego elementu tablicy
  29.  
  30. echo $sgp[1]; // Wypisuje wartość dla danego elementu powiększonego o daną liczbę minut
  31. ?>
Go to the top of the page
+Quote Post
ichu
post
Post #6





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.08.2006

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


Działa! smile.gif Rozwiązanie prostsze niż sądziłem... Dzięki za pomoc, temat uważam za zakończony.
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: 22.08.2025 - 08:16