Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skracanie wyrazenia if
Forum PHP.pl > Forum > Przedszkole
JamalBIG
Witam

Czy mozna 'jakos' skrocic takie wyrazenie?:
  1. <?php
  2. if ($ocena == 1) {
  3.  $checked1 = 'checked';
  4. } elseif ($ocena == 2) {
  5.  $checked2 = 'checked';
  6. } elseif ($ocena == 3) {
  7.  $checked3 = 'checked';
  8. } elseif ($ocena == 4) {
  9.  $checked4 = 'checked';
  10. } elseif ($ocena == 5) {
  11.  $checked5 = 'checked';
  12. }
  13. ?>
Lejto
użyć porostu OR?
v1t4n
Przypuszczam ze robisz to do selecta. Jesli tak to spróbój na tablicach smile.gif
.radex
switch!

  1. <?php
  2. switch($ocena)
  3. {
  4. case 1: $checked1 = 'checked'; break;
  5.  
  6. case 2: $checked2 = 'checked'; break;
  7.  
  8. //itd.
  9. }
  10. ?>


Edit:

Panowie! Jeśli to ma być tylko te 5 wartości to po kiego grzyba syfić kod małoczytelnym kodem?
kirex
  1. <?php
  2. ${'checked'.$ocena} = 'checked';
  3. ?>
Lion_87
A może tak?
  1. <?
  2. $ocena="4";
  3. for($a=1;$a<=5;$a++){
  4. if($ocena==$a){${checked.$a}="checked";}
  5. }
  6.  
  7. ?>
  8. <input type="checkbox" <? echo $checked1; ?>>
  9. <input type="checkbox" <? echo $checked2; ?>>
  10. <input type="checkbox" <? echo $checked3; ?>>
  11. <input type="checkbox" <? echo $checked4; ?>>
  12. <input type="checkbox" <? echo $checked5; ?>>
decha-design
Trochę warningów Ci parser PHP wysypie przy tym twoim kodzie, @Lion_87
JamalBIG
Sporo tych propozycji, dzeki za zainteresowanie ale teraz sam nie wiem ktory wybrac bo np ze switch raczej odpada bo 'niezmniejsza' mi kodu ale petla z uzyciem funkcji for wyglada interesujaco
kirex
@JamalBIG a po jakiego grzyba Ci ten for ? masz jedną zmienną $ocena, która zawiera wartości od 1 do 6 czyli w zupełności wystarczy Ci samo

  1. <?php
  2. ${'checked'.$ocena} = 'checked';
  3. ?>


powiedzmy, że ocena bedzie miała wartość 4 to z w/w wyrażenia dostaniesz $checked4 = 'checked'


Ps. no chyba, że od razu chcesz utworzyć pozostałe chcecked.. z pustymi wartościami winksmiley.jpg
Lion_87
Cytat
Trochę warningów Ci parser PHP wysypie przy tym twoim kodzie, @Lion_87


no całe 0 winksmiley.jpg

racja racja MOJA wina smile.gif no może 1
kirex
@Lion_87 wywali 6 NOTICE tongue.gif

i błąd przy ${checked.$a} winksmiley.jpg
decha-design
to jeden piernik haha.gif ważne, że wywali =)
Crozin
Jak rozumieim masz zadeklarowaną stałą: checked (o wartości checked) tylko nam jej nie pokazujesz?

Albo zapomniałeś włączyć raportowania błędów typu E_NOTICE?
JamalBIG
Dzieki @kirex
  1. <?php
  2. ${'checked'.$ocena} = 'checked';
  3. ?>


Dziala pieknie i byl bym bardzo wdzieczny za 'wytlumaczenie' mi tego kodu
Crozin
PHP to taki język, który umożliwia dynamiczne tworzenie nazw zmienych. Innymi słowy utworzy zmienną o nazwie checked + wartość ze zmiennej $ocena o wartości checked
Lion_87
Cytat
@Lion_87 wywali 6 NOTICE tongue.gif

i błąd przy ${checked.$a} winksmiley.jpg


hmmmm jednak nadal nierozumiem...mozesz bardziej wytłumaczyć kirex?
kirex
@Lion_87 checked w nawiasie klamrowym musi być w "ciapkach", czyli łączysz string ze zmienną 'chceked' . $ocena i to podstawiasz pod ${ ... }

Jeśli zaś w Twoim przypadku checked było stałą, to powinieneś napisać ją dużymi literami winksmiley.jpg
Lion_87
Cytat
@Lion_87 checked w nawiasie klamrowym musi być w "ciapkach", czyli łączysz string ze zmienną 'chceked' . $ocena i to podstawiasz pod ${ ... }

Jeśli zaś w Twoim przypadku checked było stałą, to powinieneś napisać ją dużymi literami winksmiley.jpg


No to kapuje ale czemu 6 NOTICE?

EDIT
domyślam sie może ze przez to?
Kod
<? echo $checked1; ?>
itd.
kirex
Cytat(Lion_87 @ 7.05.2009, 20:51:29 ) *
A może tak?
  1. <?
  2. $ocena="4";
  3. for($a=1;$a<=5;$a++){
  4. if($ocena==$a){${checked.$a}="checked";}
  5. }
  6.  
  7. ?>
  8. <input type="checkbox" <? echo $checked1; ?>>
  9. <input type="checkbox" <? echo $checked2; ?>>
  10. <input type="checkbox" <? echo $checked3; ?>>
  11. <input type="checkbox" <? echo $checked4; ?>>
  12. <input type="checkbox" <? echo $checked5; ?>>

Pomyliło mi się, będą 4 NOTICE, czyli $checked(1,2,3,5) ponieważ ich nie zadeklarowałeś
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.