Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z ifem
Forum PHP.pl > Forum > Przedszkole
graby0
Cześć,
na wejściu pętli mam zmienną która zawsze wynosi jakiś string. Później wchodzę do ifa i jeżeli zmienna wynosi ustalony wyraz to druga zmienna zmienia swoją wartość. Problem w tym że if zawsze wchodzi w pierwszym ifie co uniemożliwia poprawnie ustalić wartość drugiej zmiennej.

  1. if ($idnazwaprocesora=='A10-6800K'||'A10-6700'){
  2. $zmiennakartygraficznej = 'HD8670D';
  3. }
  4. else{
  5. if ($idnazwaprocesora=='A6-6400K'){
  6. $zmiennakartygraficznej = "HD8470D";
  7. }
  8. else{
  9. if ($idnazwaprocesora=='A4-5300'||'AD4000'){
  10. $zmiennakartygraficznej = 'HD7480D';
  11. }else{
  12. if ($idnazwaprocesora=='A6-5400'){
  13. $zmiennakartygraficznej = "HD7540D";
  14. }else{
  15. if ($idnazwaprocesora=='A8-6600K'){
  16. $zmiennakartygraficznej = "HD8570D";
  17. }else{
  18. if ($idnazwaprocesora=='A10-5700'){
  19. $zmiennakartygraficznej = "HD7660D";
  20. }else{
  21. if ($idnazwaprocesora=="i7-4770K"||"i7-4770"||"i7-4770S"||"i5-4670K"||"I5-4670"||"i5-4570S"||"i5-4430"){
  22. $zmiennakartygraficznej = "HD4600";
  23. }else{
  24. if ($idnazwaprocesora=="i7-3770K"||'i3-3245'||"i5-3570K"||"i3-3225"){
  25. $zmiennakartygraficznej = 'HD4000';
  26. }else{
  27. if ($idnazwaprocesora=="i5-3550"||"i5-3570"||"i5-3470"||"i5-2320"||"i3-3220"||"i5-3330"||"i3-3220"||"i3-2130"||"i3-3220T"||"i5-2500K"||"i7-2600K"){
  28. $zmiennakartygraficznej = "HD2500";
  29. }}}}}}}}}

Przykład: Kiedy wpiszę wartość i3-3245 to druga zmienna zawsze będzie ustawiona na HD8670D.
nospor
Przedewszystkim
nie: if ($cos == 'cos' || 'cosinnego')
a: if ($cos == 'cos' || $cos == 'cosinnego')
graby0
Działa, sry mój błąd.
Puszy
Podepne się pod temat. Jak najlepiej radzić sobie z zagnieżdżonymi ifami, gdzie mało sensowne (moim zdaniem) wydaje się uzycie switcha? Czy warto stworzyć swego rodzaju kontroler? Jeżeli tak to na jakiej zasdadzie powinien działać?

W pracy często spotykam sie właśnie z tego typu problemami. Może ktoś ma wizję jak poniższy kod przepisać na mniej zagnieżdżony. W jednej z moich klas mam funkcję opierającą się na zagnieżdżonych ifach na zasadzie jak poniżej. Niestety każdy kolejny zagnieżdżony element musi wynikać z poprzednich wartości.

  1. if(!empty($data)){
  2. if(is_numeric($data)){
  3. $search_order = $this->GetOrder($data);
  4.  
  5. if($search_order->Success){
  6.  
  7. if($search_order->Order->OrderType == 'DeliveryOrder'){
  8.  
  9. if($search_order->Order->PaymentStatus){
  10.  
  11. if($search_order->Order->Status == 'Sent'){
  12.  
  13. // blah, blah, blah
  14.  
  15. }else{
  16. $response->Msg = 'Zamowienie nie jest odpowiedniego typu';
  17. }
  18.  
  19. }else{
  20. $response->Msg = 'Zamowienie nie jest odpowiedniego typu';
  21. }
  22.  
  23. }elseif($search_order->Order->OrderType == 'Order'){
  24.  
  25. if($search_order->Customer->CountryID == 13){
  26.  
  27. // blah, blah, blah
  28.  
  29. }else{
  30. $response->Msg = 'Zamowienie nie powinno zostac wyslane na terenie Polski';
  31. }
  32.  
  33. }else{
  34. $response->Msg = 'Zamowienie nie jest odpowiedniego typu';
  35.  
  36. if($this->log('type', 'ERROR12: blah blah')->Success){
  37.  
  38. // blah, blah, blah
  39.  
  40. }else{
  41. $response->SubMsg = 'Wpis nieudany';
  42. }
  43.  
  44. }
  45.  
  46. }else{
  47. $response->Msg = 'Zamowienie nie odnalezione';
  48. }
  49. }
  50.  
  51. else{
  52. $response->Msg = 'Dane nie sa liczbami';
  53. }
  54. }else{
  55. $response->Msg = 'Dane puste';
  56. }



dodatkowo dodam że autor tematu zamiast pisać jak proponuje nospor mógłby użyć moim zdaniem czytelniejszej wersji:

  1. if (in_array($idnazwaprocesora, array("i5-3550", "i5-3570", "i5-3470", "i5-2320", "i3-3220", "i5-3330", "i3-3220", "i3-2130", "i3-3220T", "i5-2500K", "i7-2600K"))){
  2. }
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.