Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrócenie if i else if
Forum PHP.pl > Forum > Przedszkole
JamalBIG
Witam

Jest jakiś sposób na skrócenie poniższej 'formułki'?

  1. if ($row['wersja']) {
  2. $id_kategorii = $row['wersja'];
  3. } else if ($row['marka']) {
  4. $id_kategorii = $row['marka'];
  5. } else if ($row['model']) {
  6. $id_kategorii = $row['model'];
  7. } else if ($row['rodzaj']) {
  8. $id_kategorii = $row['rodzaj'];
  9. }


Z góry dzięki za odpowiedz
Pozdrawiam
gino
manual

gino
Crozin
Mógłbyś tutaj z jakąś pętlą wyskoczyć typu:
  1. foreach (array('wersja', 'marka', 'model', 'rodzaj') as $abc) {
  2. if ($row[$abc]) {
  3. $id_kategorii = $row[$abc];
  4. break;
  5. }
  6. }
Ale szczerze powiedziawszy zostawiłbym to tak jak jest, bo jest czytelniej i prościej.

@mat-bi: Pomijając fakt, że jest to błędny kod... weź nawet takich potworków nie proponuj. wink.gif
mat-bi
Gino, radzę najpierw spojrzeć w kod wink.gif

Można uzżyć skróconej wersji if

  1. $id_kategorii = ($row['wersja']) ? $row['wersja']; : ($row['marka']) ? $row['marka']; : ($row['model']) ? $row['model']; : ($row['rodzaj']) ? $row['rodzaj'];

JamalBIG
dzięki wszystkim za odpowiedź ale jeżeli nie ma jakiegoś fajnego rozwiązania to rzeczywiście zostanę przy tym co już zrobiłem
gino
Cytat(mat-bi @ 19.03.2011, 20:54:21 ) *
Gino, radzę najpierw spojrzeć w kod wink.gif


spojrzałem, czytelniej jest tak jak jest a bardzej elegancko z switch ... case

gino

PS. pomijając fakt błędnego kodu
mat-bi
Gino, ale za każdym razem sprawdzany jest inny element tablicy, w jaki więc sposób chcesz to przerobić przez switch?
gino
ooo sory, już nie widzę od kompa, najwyższa pora skończyć na dzisija pracę spie.gif moje posty prosze pominąć ...


gino
everth
@mat-bi: da się
  1. switch(true) {
  2. case isset($row['wersja']):
  3. //jakis kod
  4. break;
  5. case isset($row['marka']):
  6. //jakis kod
  7. break;
  8. }

Pytanie co będzie bardziej zrozumiałe, kod w obecnej postaci czy przepisany z użyciem switcha. Ja wolę obecny.
mat-bi
W sumie ja też. (nawet nie wiedziałem o takiej konstrukcji switch wink.gif)

A co do @Crozin, rzeczywiście, przesadziłem z potworkiem.
desperat666
Nie jestem do końca pewien czy złapałem smile.gif

  1. <?php
  2. function SetCategoryID($rowarray) {
  3. $CategoryID = "";
  4. if is_array($rowarray) {
  5. // Zgodnie z zamierzoną kolejnością, sprawdza czy jest taki klucz i przypisuje zmiennej CategoryID wartość klucza
  6. // uprzednio sprawdzając czy wartość klucza nie jest NULL, bo jeśli tak to CategoryID pozostanie domyślnie puste.
  7. // Rozumiem że tylko jeden z kluczy w $rowarray będzie w danym momencie miał przypisaną wartość, którą autor chciał przypisać zmiennej
  8. // id_kategorii, bo jeśli nie, to id_kategorii zostanie przypisana wartość z ostatniego sprawdzanego klucza
  9. if array_key_exists('wersja',$rowarray) { if ($rowarray['wersja']!="") { $CategoryID=$rowarray['wersja']; } }
  10. if array_key_exists('marka',$rowarray) { if ($rowarray['marka']!="") { $CategoryID=$rowarray['marka']; } }
  11. if array_key_exists('model',$rowarray) { if ($rowarray['model']!="") { $CategoryID=$rowarray['model']; } }
  12. if array_key_exists('rodzaj',$rowarray) { if ($rowarray['rodzaj']!="") { $CategoryID=$rowarray['rodzaj']; } }
  13. }
  14. // CategoryID pozostanie puste jeżeli żadna z wartości kluczy nie będzie ustawiona
  15. return $CategoryID;
  16. }
  17.  
  18. if (SetCategoryID($row)!="") {$id_kategorii = SetCategoryID($row); } else { printf("Nie można ustawić id_kategorii\n"); print_r($row); }
  19. // no i nie powinno się krzaczyć..
  20. ?>
  21.  
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.