Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrócenie kodu
MenTo(S)
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 9.05.2013
Skąd: Kielce

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


Witam, potrzebuje skrócić poniższy kod sam sobie jakoś nie mogę z tym poradzić.
Z góry dzięki za pomoc.
  1. $i = 121;
  2. $i2 = 107;
  3. $i3 = 91;
  4. $i4 = 76;
  5. $i5 = 61;
  6. $i6 = 47;
  7. $i7 = 31;
  8. $i8 = 17;
  9. $i9 = 0;
  10.  
  11. if($value1 < 0){
  12. $wysokosc1 = $i9;
  13. }
  14. if($value1 > 0){
  15. $wysokosc1 = $value1*0.34;
  16. }
  17. if($value1 > 50){
  18. $wysokosc1 = $i8;
  19. }
  20. if($value1 > 51){
  21. $wysokosc1 = $value1*0.28;
  22. }
  23. if($value1 > 100){
  24. $wysokosc1 = $i7;
  25. }
  26. if($value1 > 101){
  27. $wysokosc1 = $value1*0.32;
  28. }
  29. if($value1 > 150){
  30. $wysokosc1 = $i6;
  31. }
  32. if($value1 > 151){
  33. $wysokosc1 = $value1*0.32;
  34. }
  35. if($value1 > 200){
  36. $wysokosc1 = $i5;
  37. }
  38. if($value1 > 201){
  39. $wysokosc1 = $value1*0.3;
  40. }
  41. if($value1 > 250){
  42. $wysokosc1 = $i4;
  43. }
  44. if($value1 > 251){
  45. $wysokosc1 = $value1*0.3;
  46. }
  47. if($value1 > 300){
  48. $wysokosc1 = $i3;
  49. }
  50. if($value1 > 301){
  51. $wysokosc1 = $value1*0.3;
  52. }
  53. if($value1 > 350){
  54. $wysokosc1 = $i2;
  55. }
  56. if($value1 > 351){
  57. $wysokosc1 = $value1*0.3;
  58. }
  59. if($value1 > 399){
  60. $wysokosc1 = $i;
  61. }


Ten post edytował MenTo(S) 1.08.2014, 01:20:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
ctom
post
Post #2





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


może tak ...


Kod
$range =array(0 =>  $value1*0.34,
            50    =>    17 , // $i8
            51    =>    $value1*0.28,
            100    =>    31, // $i7
            //.....i tak dalej
            );
            
if($value1 < 0 ) {    
    $wysokosc1 = 0; // $i9
}
else {
    foreach($range as $k=>$v){
        if($value1 > $k) $wysokosc1 = $v;
    }
}


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Michael2318
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


Pętla for, mnożniki tylko musisz zapisać jeszcze do tablicy.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ale paskudne kodzisko. Kod spaghetti pełną gębą.

Zacznij od nazwania zmiennych po ludzku, bo jakoś nie wiem co to jest $value1 czy $i5. Pomysł kolegi ctom jest dobry, ale ja bym poszedł o krok dalej. Jak widać w tych warunkach występuje inna wartość dla równości (mimo, że zapisanej jako >). Wartości równe tym przedziałowym otrzymują wysokość jako wartość stałą, a wszystkie pośrodku jako iloczyn $value1 (aha!) i jakiejś stałej. Uwzględniłbym tę zależność w projektowaniu tablicy rang, nadając jej kształt na zasadzie:

  1. $range = array(
  2. // ...
  3.  
  4. 101 => array(
  5. 'fixed' => 31,
  6. 'multiplier' => 0.32
  7. ),
  8.  
  9. // ...
  10. );


Ale najpierw napisz co ten potwór robi.
Go to the top of the page
+Quote Post
MenTo(S)
post
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 9.05.2013
Skąd: Kielce

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


W sumie fakt nie napisałem co za zadanie ma spełniać kod który wrzuciłem.
Otóż chodzi o to że jeżeli $wartosc ktora jest przykładowo x > 101 wtedy wartość $wysokosc ma byc $value*0.3 czyli 100*0.3.
Wtedy $wysokosc okresla mi wysokosc danego <div>.
Jako że jestem początkującym zrobiłem to jak zrobiłem ale działało smile.gif.

Reasumując używając tego co podrzucił ctom niezbyt chce to działać.

  1. $range = array(0 => $value2*0.34, 50 => 17, 51 => $value2*0.28,
  2. 100 => 31, 101 => $value2*0.32, 150 => 17, 151 => $value2*0.32,
  3. 200 => 61, 201 => $value2*0.3, 250 => 76, 251 => $value2*0.3,
  4. 300 => 91, 301 => $value2*0.3, 350 => 107, 351 => $value2*0.3,
  5. 400 => 121);
  6.  
  7. if($value2 < 0 ) {
  8. $wysokosc1 = null;
  9. } else {
  10. foreach($range as $k => $v){
  11. if($value2 > $k) $wysokosc1 = $v;
  12. }
  13. }




Słupek pierwszy to mój kod "spaghetti" snitch.gif
Natomiast drugi jest to kod który podrzucił właśnie ctom

Ten post edytował MenTo(S) 1.08.2014, 11:21:59
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Mam dziwne przeczucie, że to można zapisać w króciutkim wyrażeniu. Możesz dokładnie wytłumaczyć o co chodzi z $value1 i $value2?
Go to the top of the page
+Quote Post
MenTo(S)
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 9.05.2013
Skąd: Kielce

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


$value1,2,3,4 w moim przypadku to będzie pobierana liczba osób z bazy danych.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #8





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Dlaczego wysokość rośnie tak nieregularnie, tzn. raz o 14px, raz o 15px, raz o 16px w ramach jednego przedziału? Czy to zaniedbanie czy jakieś celowe działanie? Bo coś mi się wydaje, że wystarczyłoby to zapisać jednym wyrażeniem arytmetycznym.
Go to the top of the page
+Quote Post
MenTo(S)
post
Post #9





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 9.05.2013
Skąd: Kielce

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


Cytat(SmokAnalog @ 1.08.2014, 12:29:45 ) *
Dlaczego wysokość rośnie tak nieregularnie, tzn. raz o 14px, raz o 15px, raz o 16px w ramach jednego przedziału? Czy to zaniedbanie czy jakieś celowe działanie? Bo coś mi się wydaje, że wystarczyłoby to zapisać jednym wyrażeniem arytmetycznym.

Tak to zaniedbanie zapewne to poprawie co do kodu może rosnąc równomiernie dla każdego przedziału.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #10





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Najładniej byłoby określić maksymalną możliwą wysokość słupka i maksymalną liczbę użytkowników widoczną na wykresie, np.:
  1. $maxUsers = 500;
  2. $maxHeight = 300;


I potem na podstawie liczby użytkowników (dajmy na to $users), nadawać słupkowi odpowiednią wysokość, np.:
  1. $height = round($users * $maxHeight / $maxUsers);
Go to the top of the page
+Quote Post
MenTo(S)
post
Post #11





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 9.05.2013
Skąd: Kielce

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


Cytat(SmokAnalog @ 1.08.2014, 12:46:24 ) *
Najładniej byłoby określić maksymalną możliwą wysokość słupka i maksymalną liczbę użytkowników widoczną na wykresie, np.:
  1. $maxUsers = 500;
  2. $maxHeight = 300;


I potem na podstawie liczby użytkowników (dajmy na to $users), nadawać słupkowi odpowiednią wysokość, np.:
  1. $height = round($users * $maxHeight / $maxUsers);


Nie przypuszczałem że można zrobić to takim krótkim kodem smile.gif
Dzięki wielkie.
Go to the top of the page
+Quote Post
ctom
post
Post #12





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(MenTo(S) @ 1.08.2014, 12:17:06 ) *
Reasumując używając tego co podrzucił ctom niezbyt chce to działać.


kod po refaktoryzacji zwraca wyniki z założeń , a to że miałeś w nich błędy oraz kwestia co z nimi robiłeś później to już inna sprawa



--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
AmbitnyCzłowiek
post
Post #13





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.07.2013

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


Wykresy rysujesz w phpie? Nie prościej użyć jakiejś biblioteki js? Z własnego doświadczenia polecam Chart.js, dobrze współpracuje z JSON'em.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #14





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Cytat(AmbitnyCzłowiek @ 6.08.2014, 10:19:46 ) *
Nie prościej użyć jakiejś biblioteki js? Z własnego doświadczenia polecam Chart.js, dobrze współpracuje z JSON'em.

Biblioteka JS współpracuje z JSON-em? A po co?
Go to the top of the page
+Quote Post
AmbitnyCzłowiek
post
Post #15





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.07.2013

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


robisz arraya z danymi i potem tylko echujesz to smile.gif
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #16





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Nie mam pojęcia o co Ci chodzi. W JavaScript nie ma nic takiego jak echowanie.
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: 20.08.2025 - 16:32