![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Panowie mamy kod:
Rozbijam zmienną $expl wyciąganą z bazy, gdzie czasem może być samo X, czasem X, Y a czasami X , Y, Z. Zastanawiam się, czy dobrym sposobem jest zastosowanie funkcji explode i rzucanie tego do tablicy , ponieważ X , Y, Z może mieć zarówno expl[0] jak i expl[1] jak i expl[2]
A chciałbym osiągnąć cel if $zmienna = X rób coś tam , if $zmienna Y rób coś innego, if $zmienna Z rób zupełnie coś innego. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To chyba pytanie do Ciebie. Czy sprawdzasz tylko pierwszy znak, a resztę ignorujesz, czy też sprawdzasz każdy.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
sprawdzam całość
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
No, to w czym problem. Rozbiłeś, posortuj alfabetycznie i zastosuj 3 ify.
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
No tak tylko , że czasami Z będzie mieć $expl[0] w przypadku jeśli nie będzie X , Y ,a czasami Z będzie mieć $expl[1] jeśli będzie X i co warunki robić ?
![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A będzie sytuacja, że jest ZY, YZX, YX, itp., czyli zamieniona kolejność? Jeśli tak, to czy kolejność ma znaczenie dla wykonywania operacji?
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
X , Y , Z = to przykładowe dane (to będą skróty trzyliterowe), dla każdego ze skrótu w zależności jeśli istnieje chce nadać inny kolor.
W bazie na pole mam ustawione enum więc raczej nie powinno być pisania w spak, więc kombinacje jakie mogą być to : X X, Y X, Y, Z Y, Z Z X, Z etc. na razie kombinuje coś w ten deseń:
Ten post edytował casperii 20.06.2017, 20:09:00 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To zamiast rozbijać zastosuj http://php.net/manual/en/function.strpos.php
-------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
To zamiast rozbijać zastosuj http://php.net/manual/en/function.strpos.php Heh, właśnie próbuję zrobić do tego onelinera wykorzystując strpos ![]() W międzyczasie coś takiego mi przyszło do głowy: Ale tak czy inaczej, po pierwsze to bym się zastanowił nad strukturą danych w bazie. To co masz w tej chwili jest sprzeczne z zasadami normalizacji, a konkretnie z pierwszą postacią normalną 1NF - jedno pole w bazie powinno zawierać atomową, niepodzielną informację. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
@bostaf to pole jest wynikiem zastosowania GROUP_CONCAT
Sądzę, że chyba optymalnym i najmniej skomplikowanym rozwiązaniem będzie zastosowanie funkcji strpos , którą zaproponował @trueblue |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Sądzę, że chyba optymalnym i najmniej skomplikowanym rozwiązaniem będzie zastosowanie funkcji strpos , którą zaproponował @trueblue i najbardziej czytelnym dla kogoś, kto by przejął Twój kod w przyszłości. Ja dla zabawy coś innego próbowałem wykombinować ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
A co jeśli chciałbym rozbić od 1 - 3 losowo wybrane ciągi liczb ?
np może być: 1254,4567,84132 2122,55151 6812 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
No i co?
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
No dobra a jeśli miał by coś takiego:
to jak dla tabeli konto (jeśli znam nazwy kont) - mogę zrobić tak:
tak dla tabeli drugiej adresy nic mi normalnego nie przychodzi do głowy, ponieważ druga tabela jest zależna od pierwszej. explode chyba odpada ponieważ , dany adres może być zarówno dla konto1, jak i dla konto2, ale może być i tylko dla konto3. Ktoś ma pomysł ? Przykład jaki chce osiągnąć: Marek: adres1, adres2, adres3 Jarek: adres3 Franek: adres1, adres3 Krzysztof: adres2, adres3 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A nie wystarczy Ci GROUP_CONCAT tylko dla adresów?
-------------------- |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie wystarczy, bo dla poszczególnego konta - jest przypisany adres
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 804 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A co to zmienia? Grupujesz po kontach, a GROUP_CONCAT dla adresów. Dokładnie taki efekt uzyskasz jak pokazałeś, bez potrzeby "rozklejania" kont, bo będą to odrębne rekordy.
-------------------- |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 08:11 |