Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Operator 'lub' w funkcji IF
Forum PHP.pl > Forum > Przedszkole
encoresin
Witam,

Posiadam funkcję jeżeli... Wygląda następująco:

  1. if (strpos($item['option_79'],'Osobowe') !== false)
  2. echo ("Tabelka 1");


No i funkcja leci sobie dalej dla różnych kategorii. Wszystko działa jak powinno, ale tylko wtedy gdy mam 'osobowe'. Na stronie mam możliwość zmiany języka, a jemu odpowiada osobna kolumna i wtedy nie ma już 'osobowych' lecz 'car'. Wiem, że 'LUB' zapisuje się w postaci || (próbowałem też | (operacji bitowych)).
Starałem się to zapisać w różny sposób... Na koniec nawet leciałem już kopiując całość z początku i wklejając za znakiem LUB. Później tylko odcinałem kawałek po kawałku, ale nic mi nie działa.

Jak więc zmienić tę funkcję by tabelka 1 pojawiała się przy odczytaniu słowa 'osobowe' LUB 'car'?
Wiem, że mogę osobno zapisać osobowe i car dodając je do kolejnego wiersza jako 'else if', ale chcę mieć je na razie razem.

Dziękuje i pozdrawiam,
Przemo
kapslokk
Pokaż jak próbowałeś to sklecić smile.gif
encoresin
  1.  
  2.  
  3. if (strpos($item['option_79'],'Osobowe' || 'car') !== false)
  4. echo ("Tabelka aut");
  5.  


  1.  
  2.  
  3. if (strpos($item['option_79'],'Osobowe' || ($item['option_79'],'car') !== false))
  4. echo ("Tabelka aut");
  5.  


  1.  
  2.  
  3. if (strpos($item['option_79'],'Osobowe') !== false) || (strpos($item['option_79'],'car') !== false)
  4. echo ("Tabelka aut");
  5.  



I tak właśnie różne głupoty próbowałem wklejać... Było więcej, ale robiłem to jakiś czas temu i się poddałem. Chciałem wrócić, ale wole od razu zapytać bo to nie ma sensu.
kapslokk
  1. if (strpos($item['option_79'],'Osobowe') !== false || strpos($item['option_79'],'car') !== false)
  2. echo ("Tabelka aut");
  3.  


Wystarczy policzyć nawiasy tongue.gif W każdym razie, dobry edytor + wyświetlanie błędów rozwiążą Twoje problemy smile.gif
Pyton_000
Jeśli kolumna zawiera tylko takie wyrazy (nie są częścią zdania) to można tak:

  1. if(in_array($item['option_79'], ['Osobowe', 'car']))
encoresin
Cytat(kapslokk @ 28.03.2018, 15:09:58 ) *
  1. if (strpos($item['option_79'],'Osobowe') !== false || strpos($item['option_79'],'car') !== false)
  2. echo ("Tabelka aut");
  3.  


Wystarczy policzyć nawiasy tongue.gif W każdym razie, dobry edytor + wyświetlanie błędów rozwiążą Twoje problemy smile.gif


To co u góry pisałem na szybko. Nawiasów przestawiałem dużo i sporo. Co do edytorów: Sublime i Notepad++, ale nie pomagają gdy i tak robisz coś co nie istnieje.




Cytat(Pyton_000 @ 28.03.2018, 15:16:24 ) *
Jeśli kolumna zawiera tylko takie wyrazy (nie są częścią zdania) to można tak:

  1. if(in_array($item['option_79'], ['Osobowe', 'car']))


W kolumnie zapisuje się to tak - rodzaj - marka - model - ewentualny pod model
trzczy
Wariacje na temat dla poszerzenia horyzontów wink.gif
  1. echo preg_match('/[Oo]sobowe|car/', 'samochody Osxobowe cennik');//0
vs.
  1. echo preg_match('/[Oo]sobowe|car/', 'samochody Osobowe cennik');//1


Tu w patternie użyto tzw. alternatywy. To ta kreseczka "pipe".
encoresin
Dobra, dalej nie ogarniam. Chciałem dodać to co napisaliście i teraz wykrzacza mi całą stronę. Nie wiem już o co chodzi. Zrobiłem tak jak miałem na początku i strona dalej rozwalona... Usunięcie kodu dopiero naprawia stronę...

Chciałbym poszerzyć horyzonty, ale fajnie by było, gdybym chociaż jedno potrafił zrobić dobrze :SSS

Dziękuje za pomoc. Nie mam już chyba na to nerwów...
nospor
To moze pokaz co teraz napisales bo szklane kule w naprawie a bez nich ciezko zgadnac co zrobiles zle
encoresin
Wróciłem do punktu wejścia... Czyli to co miałem wcześniej i działało, teraz pokazuje mi błąd... Patrz - post 1. Jutro mam wolne to sobie usiądę raz jeszcze i wygrzmocę wszystkie dane z tabeli. Na czysto dodam wszystkie możliwości do tabeli i jeszcze raz będę kombinował z tym co podaliście.
trzczy
Jesteś na etapie nauki podstaw podstaw. Idzie ci ciężko. Ale czasem to procentuje w przyszłości bardzo dużym przyśpieszeniem. Zacznij radzę od czegoś takiego:

  1. $a = true;
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dokonaj małej podmiany przy przypisaniu zmiennej $a:

  1. $a = (57 === 57);
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}

Potem dalej rozbudowuj kod:

  1. $a = strpos('abcd', 'bc');
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dalej rozbudowuj kod(2):

  1. $subject = 'abcd';
  2. $a = strpos($subject, 'bc');
  3. $b = false;
  4. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dalej rozbudowuj kod(3):

  1. $array = ['subj5'=>'abcd', 'subj6'=>'abycd', 'subj7'=>'abxcd'];
  2. $a = strpos($array['subj5'], 'bc');
  3. $b = false;
  4. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Ostatecznie do ifa możesz powrzucać te złożone wyrażenia zamiast $a i $b.
Pyton_000
Nie ucz początkujących pisać `or` jako alternatywy bo potem będzie płacz jak wstawi || i nie działa...
trzczy
Zgadza się, to dosyć istotny niuans.
encoresin
Cytat(trzczy @ 28.03.2018, 21:03:01 ) *
Wariacje na temat dla poszerzenia horyzontów wink.gif
  1. echo preg_match('/[Oo]sobowe|car/', 'samochody Osxobowe cennik');//0
vs.
  1. echo preg_match('/[Oo]sobowe|car/', 'samochody Osobowe cennik');//1


Tu w patternie użyto tzw. alternatywy. To ta kreseczka "pipe".


Witam, dziś jednak znalazłem dopiero czas...

Wpisanie tego kodu daje mi wszędzie wynik 0.Nie wiem jak spreparować go do działania z $item['option_79'].

Strona mi się wysypała bo miałem swój kod wklejony ze starych prób, a tam nie zgadzała się jedna rzecz... Cały kod wygląda następująco i działa okej:

  1.  
  2. <?php
  3.  
  4. if (strpos($item['option_79'], 'Osobowe') !== false)
  5. echo ("Tabelka aut");
  6. else if (strpos($item['option_79'], 'Motocykle') !== false)
  7. echo "Tabelka motocykli";
  8. else if (strpos($item['option_79'], 'Dostawcze') !== false)
  9. echo "Tabelka dostawczakow";
  10. else
  11. echo "Tabelka czesci";
  12.  
  13. ?>
  14. <!-- TESTY TABELEK!! -->
  15.  


I zamiast pisać

  1. if (strpos($item['option_79'], 'Osobowe') !== false)
  2. echo ("Tabelka aut");
  3. else if (strpos($item['option_79'], 'Car') !== false)
  4. echo "Tabelka aut";


Chcę to mieć w jednym zapisie. Na pewno da się to zapisać w pojedynczej linii?!

Pobawię się teraz kodami podanymi tutaj. Zobaczę czy uda mi się zastosować w jakiś sposób to:

Cytat(trzczy @ 29.03.2018, 17:03:44 ) *
Jesteś na etapie nauki podstaw podstaw. Idzie ci ciężko. Ale czasem to procentuje w przyszłości bardzo dużym przyśpieszeniem. Zacznij radzę od czegoś takiego:

  1. $a = true;
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dokonaj małej podmiany przy przypisaniu zmiennej $a:

  1. $a = (57 === 57);
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}

Potem dalej rozbudowuj kod:

  1. $a = strpos('abcd', 'bc');
  2. $b = false;
  3. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dalej rozbudowuj kod(2):

  1. $subject = 'abcd';
  2. $a = strpos($subject, 'bc');
  3. $b = false;
  4. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Potem dalej rozbudowuj kod(3):

  1. $array = ['subj5'=>'abcd', 'subj6'=>'abycd', 'subj7'=>'abxcd'];
  2. $a = strpos($array['subj5'], 'bc');
  3. $b = false;
  4. if ($a or $b) {echo 'ok';} else {echo 'ko';}


Ostatecznie do ifa możesz powrzucać te złożone wyrażenia zamiast $a i $b.

wxm
  1. if ((strpos($item['option_79'], 'Osobowe') !== false) || (strpos($item['option_79'], 'Car') !== false)) echo ("Tabelka aut");

smile.gif
encoresin
Cytat(wxm @ 2.04.2018, 13:50:52 ) *
  1. if ((strpos($item['option_79'], 'Osobowe') !== false) || (strpos($item['option_79'], 'Car') !== false)) echo ("Tabelka aut");

smile.gif


I serio tyle? User Kapslokk już wspomniał o nawiasach, ale nie wiedziałem jak mam je postawić. Różne rzeczy z nawiasami robiłem i nigdy nie działało...

wxm
Przecież to zwykła instrukcja
  1. if (warunek_1 || warunek_2)
smile.gif
encoresin
Cytat(wxm @ 2.04.2018, 14:12:19 ) *
Przecież to zwykła instrukcja
  1. if (warunek_1 || warunek_2)
smile.gif


No, ale dla mnie powinno wyglądać to tak:

  1. if ((warunek_1) || (warunek_2))


A i tak nie wiedziałem czy muszę używać za "lub" te strpos czy nie. Ale działa super więc fajnie.

Dziękuje wszystkim. Tamte przykłady wcześniejsze sobie poćwiczę na głupich przykładach. Może się czegoś nauczę.
wxm
W tym przypadku nawiasy są tylko dla lepszego zobrazowania o co chodzi, gdybyś je usunął to też będzie działać poprawnie. Z logicznego punktu widzenia możesz zrobić nawet tak
  1. if (((((($a))))) || (((((((((($b)))))))))))
te nawiasy i tak określają jedynie kolejność wykonywania działań smile.gif
encoresin
Cytat(wxm @ 2.04.2018, 17:20:55 ) *
W tym przypadku nawiasy są tylko dla lepszego zobrazowania o co chodzi, gdybyś je usunął to też będzie działać poprawnie. Z logicznego punktu widzenia możesz zrobić nawet tak
  1. if (((((($a))))) || (((((((((($b)))))))))))
te nawiasy i tak określają jedynie kolejność wykonywania działań smile.gif



No tego nie wiem, bo jak wcześniej dużo prób zrobiłem to zawsze wykrzaczało stronę. Ale możliwe, że coś innego zrypałem. Dawno to było więc nie pamiętam.

Dziękuję za te info. Na pewno się przyda!
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.