Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Operator 'lub' w funkcji IF, Jak poprawnie dodać operator 'OR'?
encoresin
post 28.03.2018, 13:47:16
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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
Go to the top of the page
+Quote Post
kapslokk
post 28.03.2018, 13:55:41
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Pokaż jak próbowałeś to sklecić smile.gif
Go to the top of the page
+Quote Post
encoresin
post 28.03.2018, 14:06:05
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


  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.
Go to the top of the page
+Quote Post
kapslokk
post 28.03.2018, 14:09:58
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


  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
Go to the top of the page
+Quote Post
Pyton_000
post 28.03.2018, 14:16:24
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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']))
Go to the top of the page
+Quote Post
encoresin
post 28.03.2018, 19:27:16
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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
Go to the top of the page
+Quote Post
trzczy
post 28.03.2018, 20:03:01
Post #7





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


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".
Go to the top of the page
+Quote Post
encoresin
post 29.03.2018, 14:18:04
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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...
Go to the top of the page
+Quote Post
nospor
post 29.03.2018, 14:28:27
Post #9





Grupa: Moderatorzy
Postów: 36 468
Pomógł: 6300
Dołączył: 27.12.2004




To moze pokaz co teraz napisales bo szklane kule w naprawie a bez nich ciezko zgadnac co zrobiles zle


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
encoresin
post 29.03.2018, 14:34:58
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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.
Go to the top of the page
+Quote Post
trzczy
post 29.03.2018, 16:03:44
Post #11





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


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.
Go to the top of the page
+Quote Post
Pyton_000
post 29.03.2018, 16:10:59
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Nie ucz początkujących pisać `or` jako alternatywy bo potem będzie płacz jak wstawi || i nie działa...
Go to the top of the page
+Quote Post
trzczy
post 29.03.2018, 16:30:43
Post #13





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Zgadza się, to dosyć istotny niuans.
Go to the top of the page
+Quote Post
encoresin
post 2.04.2018, 12:32:39
Post #14





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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.



Ten post edytował encoresin 2.04.2018, 12:56:41
Go to the top of the page
+Quote Post
wxm
post 2.04.2018, 12:50:52
Post #15





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 17.02.2018

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


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

smile.gif
Go to the top of the page
+Quote Post
encoresin
post 2.04.2018, 13:04:23
Post #16





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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

Go to the top of the page
+Quote Post
wxm
post 2.04.2018, 13:12:19
Post #17





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 17.02.2018

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


Przecież to zwykła instrukcja
  1. if (warunek_1 || warunek_2)
smile.gif
Go to the top of the page
+Quote Post
encoresin
post 2.04.2018, 15:11:03
Post #18





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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ę.
Go to the top of the page
+Quote Post
wxm
post 2.04.2018, 16:20:55
Post #19





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 17.02.2018

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


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
Go to the top of the page
+Quote Post
encoresin
post 2.04.2018, 17:52:06
Post #20





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


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!

Ten post edytował encoresin 2.04.2018, 17:52:36
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: 21.05.2024 - 11:19