Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z tablicami - PHP., Odmiana przez przypadki.
bercik809
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 19.06.2013
Skąd: Wrocław

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


Witam wszystkich,

Jestem nowym użytkownikiem, cieszę się, że znalazłem to forum i chciałem wszystkich przywitać (IMG:style_emoticons/default/smile.gif)

Mój pierwszy post będzie dotyczył problemu z tablicami, a mianowicie proszę spojrzeć na kod:

  1. function secondToString( $Seconds ) {
  2.  
  3. $zmienne_jednostki = array("rok", "lata", "miesiace", "miesiecy", "dzien", "godzina", "godziny", "minuta", "minuty", "sekundy", "sekunda");
  4. $jednostki = array(
  5. 60*60*24*365 => ' lat',
  6. 60*60*24*30 => ' miesiac', // miesiace
  7. 60*60*24 => ' dni', // dni
  8. 60*60 => ' godzin', // godziny
  9. 60 => ' minut', // minuty
  10. 1 => ' sekund', // sekundy
  11. );
  12.  
  13.  
  14. $zawartosc = '';
  15. foreach( $jednostki As $czas_minuty => $czas_sekundy ) {
  16. $iDiv = $Seconds/$czas_minuty;
  17. if( $iDiv >= 1 ) {
  18. $x = floor( $iDiv );
  19. $zawartosc .= $x.''.$czas_sekundy.' ';
  20. $Seconds-= $x*$czas_minuty;
  21. }
  22.  
  23.  
  24. if(date("m") == 01 || 03 || 05 || 07 || 08 || 10 || 12 ){
  25.  
  26. $zamien = array(60*60*24*31 => 'miesiac');
  27. array_replace($jednostki, $zamien);
  28. }
  29.  
  30. else {
  31.  
  32. $zamien = array(60*60*24*30 => 'miesiac');
  33. array_replace($jednostki, $zamien);
  34. }
  35.  
  36. if(date("L")){
  37.  
  38. $zamien = array(60*60*24*28 => 'miesiac');
  39. array_replace($jednostki, $zamien);
  40. }
  41.  
  42. }
  43.  
  44. return $zawartosc;
  45. }
  46.  
  47.  
  48. echo secondToString($name = $_REQUEST['name']);


Chodzi o to by, nie zwracało mi wyniku tylko i wyłącznie typu: 1 lata 2 dnia 5 miesiac - tylko 1 rok 2 dni 5 miesięcy.
Męczę się z tym nie miłosiernie i nie mogę tego rozwiązać.
Proszę o jakąkolwiek pomoc, jeżeli będzie potrzeba więcej szczegółów odnośnie problemu postaram się dopisać jak najwięcej.
Skrypt po wpisaniu w formularzu html i naciśnięciu przycisku dzięki ajaksowi bez odświeżania zamienia wpisaną ilość sekund na ilość sekund,
minut, dni, godzin, miesięcy i lat.
I wszystkie nazwy lat, miesiecy, dni itd. idą z jednej tablicy. I chodzi mi o to, co mam dopisać aby nazwy z tablicy odmieniały się przez
przypadki, tzn. nie były sztywne. Jak już pisałem, nie 2 lat, tylko 2 lata itd.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bercik809
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 19.06.2013
Skąd: Wrocław

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


Właśnie w tym jest problem, jak daję taki kod:

  1. foreach( $jednosci As $czas_minuty => $czas_sekundy) {
  2. $iDiv = $Seconds/$czas_minuty;
  3.  
  4. switch($czas_sekundy){
  5.  
  6. case 'sekunda':
  7.  
  8. if($iDiv >= 2 && $iDiv <= 4){
  9.  
  10. $czas_slownie = " sekundy";
  11. $x = floor( $iDiv );
  12. $zawartosc .= $x.''.$czas_slownie.' ';
  13. $Seconds-= $x*$czas_minuty;
  14. break;
  15.  
  16. } // zakonczenie instrukcji if($iDiv >= 2 && $iDiv <= 4).
  17.  
  18. if($iDiv >= 5){
  19.  
  20. $czas_slownie = " sekund";
  21. $x = floor( $iDiv );
  22. $zawartosc .= $x.''.$czas_slownie.' ';
  23. $Seconds-= $x*$czas_minuty;
  24. break;
  25.  
  26. } // zakonczenie instrukcji if($iDiv >= 5).
  27.  
  28. case 'minuta':
  29.  
  30. if($iDiv >= 2 && $iDiv <= 4){
  31.  
  32. $czas_slownie = " minuty";
  33. $x = floor( $iDiv );
  34. $zawartosc .= $x.''.$czas_slownie.' ';
  35. $Seconds-= $x*$czas_minuty;
  36. break;
  37.  
  38. } // zakończenie instrukcji if - case "minuta".
  39.  
  40. if($iDiv >= 5){
  41.  
  42. $czas_slownie = " minut";
  43. $x = floor( $iDiv );
  44. $zawartosc .= $x.''.$czas_slownie.' ';
  45. $Seconds-= $x*$czas_minuty;
  46. break;
  47.  
  48. } // zakończenie instrukcji if ($iDiv >= 5).
  49.  
  50. case 'godzina':
  51.  
  52. if($iDiv >= 2 && $iDiv <= 4){
  53.  
  54. $czas_slownie = " godziny";
  55. $x = floor( $iDiv );
  56. $zawartosc .= $x.''.$czas_slownie.' ';
  57. $Seconds-= $x*$czas_minuty;
  58. break;
  59.  
  60. } // zakończenie instrukcji if ($iDiv >= 2 && $iDiv <= 4) - case "godzina".
  61.  
  62.  
  63. default:
  64.  
  65. if($iDiv >= 1){
  66.  
  67. $x = floor( $iDiv );
  68. $zawartosc .= $x.''.$czas_sekundy.' ';
  69. $Seconds-= $x*$czas_minuty;
  70. break;
  71.  
  72. } // zakonczenie instrukcji if - default.
  73.  
  74. } // zakonczenie wykonania switch ($czas_minuty && $czas_sekundy).
  75.  
  76. } // zakończenie petli foreach.


To wskakuje na default i nic się nie zmienia. Tylko pozostają jednostki z tablicy - nie odmieniają się.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 09:27