Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Skrócenie if i else if
JamalBIG
post 19.03.2011, 20:45:02
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


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
Go to the top of the page
+Quote Post
gino
post 19.03.2011, 20:49:50
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


manual

gino
Go to the top of the page
+Quote Post
Crozin
post 19.03.2011, 20:53:51
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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

Ten post edytował Crozin 19.03.2011, 20:57:28
Go to the top of the page
+Quote Post
mat-bi
post 19.03.2011, 20:54:21
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


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'];

Go to the top of the page
+Quote Post
JamalBIG
post 19.03.2011, 21:06:26
Post #5





Grupa: Zarejestrowani
Postów: 496
Pomógł: 1
Dołączył: 16.01.2008
Skąd: Świnoujście

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


dzięki wszystkim za odpowiedź ale jeżeli nie ma jakiegoś fajnego rozwiązania to rzeczywiście zostanę przy tym co już zrobiłem
Go to the top of the page
+Quote Post
gino
post 19.03.2011, 21:10:54
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


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

Ten post edytował gino 19.03.2011, 21:12:55
Go to the top of the page
+Quote Post
mat-bi
post 19.03.2011, 21:24:33
Post #7





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Gino, ale za każdym razem sprawdzany jest inny element tablicy, w jaki więc sposób chcesz to przerobić przez switch?
Go to the top of the page
+Quote Post
gino
post 19.03.2011, 21:38:55
Post #8





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


ooo sory, już nie widzę od kompa, najwyższa pora skończyć na dzisija pracę spie.gif moje posty prosze pominąć ...


gino
Go to the top of the page
+Quote Post
everth
post 19.03.2011, 21:52:52
Post #9





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


@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.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
mat-bi
post 19.03.2011, 21:59:16
Post #10





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


W sumie ja też. (nawet nie wiedziałem o takiej konstrukcji switch wink.gif)

A co do @Crozin, rzeczywiście, przesadziłem z potworkiem.
Go to the top of the page
+Quote Post
desperat666
post 19.03.2011, 22:13:48
Post #11





Grupa: Zarejestrowani
Postów: 31
Pomógł: 12
Dołączył: 19.03.2011

Ostrzeżenie: (10%)
X----


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.  
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 06:42