[PHP]Jak skrócić pętle if |
[PHP]Jak skrócić pętle if |
10.08.2020, 01:54:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2020 Ostrzeżenie: (0%) |
Mam taki kod funkcji, który napisałem, do przekierowania, kiedy strona jest wywołana bez dodatkowych danych. Działa, ale chyba za mocno narąbałem "ifów". Czy ktoś doświadczony mógłby powiedzieć, czy się da i jak to skrócić?
Dziękuję z góry. |
|
|
10.08.2020, 04:34:06
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) |
Przełóż na swój kod. Kolejność elementów w tablicy $a i $b jest bardzo ważna, ponieważ na tym bazuje funkcja array_search. Cyfra 2 jest sprawdzana z 'umx1', dalej 3 z 'umx2', 4 z 'umx3', itd. U Ciebie jest to Kod ($category_id =='2') && ($_SERVER['REQUEST_URI'] == '/umx_rhythmix.php') .Porównujesz kategorię 2 z adresem '/umx_rhythmix.php', więc będzie to tak. $a = [2, 3]; $b = ['/umx_rhythmix.php', '/umx_wps.php']; Pamiętaj o tym, że === w ifie jest po to, żeby sprawdzać typ! Jeśli tego nie byłoby, to "" zostałoby porównane z 0 jako true, a tego nie chcemy. Poczytaj o tej funkcji. Kod if("" == 0) , Kod if("" === 0) Proszę, gotowe. Ten post edytował Neutral 10.08.2020, 04:38:27 |
|
|
10.08.2020, 10:02:56
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2020 Ostrzeżenie: (0%) |
Bardzo Ci dziękuję!
|
|
|
10.08.2020, 13:02:30
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Trzymanie powiązanych danych w osobnych strukturach prosi się o problemy, nie róbcie tak. Patrząc na ten kod nie wiadomo co jest z czym powiązane.
Zamiast polegać na kolejności wpisów w tablicy, lepiej je grupować, bo wtedy:
Jeśli każde ID kategorii występuje tylko raz w tej logice, dobrym wyborem jest tablica mapująca ID kategorii na ścieżkę:
Ale i tak mam przeczucie, że coś dziwnie wymyśliłeś z tymi ID kategorii. Jeśli chcesz to uprościć, to napisz tu o co chodzi z tymi kategoriami, bo ilekroć w kodzie masz użyte rzeczywiste ID czegokolwiek, na 99% robisz to źle. Ten post edytował SmokAnalog 10.08.2020, 13:03:39 |
|
|
10.08.2020, 15:39:06
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2020 Ostrzeżenie: (0%) |
Może zacznę od tego, że nie jestem programistą, przez co wykazuję dużą trudność w poruszaniu się w językach programowania. Oczywiście potrafię napisać proste rzeczy, typu prosta instrukcja warunkowa if/else, ale na tym się moje umiejętności w tym zakresie kończą. Żeby jednak nie wyjść na totalną lamę, wspomnę tylko, że biegle znam język HTML4/5 i CSS 2/3. To już coś, nie?
A teraz do rzeczy: Mam panel do pisania tekstów napisany w PHP (na frameworku Laravel). Panel zwraca tablicę JSON.
Wywołanie danych z kodu jest następujące:
Tablica zwraca wartości m.in.:
To działa idealnie, mogę wyświetlić dane instrukcją:
$redirect_link potrzebny mi jest, żeby stronę wywołania bez podanych parametrów wyświetlania (np. blog.php?cat=4&id=256&page=1 zamiast blog.php) przekierować na wartość określoną właśnie w $redirect_link, przy założeniu, że na jedna strona obsługuję jedną kategorię - np. blog.php - '4', txt.php -12. Potrzebuję więc funkcji (do której require umieszczę w kodzie każdej ze stron), która wyciągnie właściwe dla siebie dane z funkcji (sprawdzi do jakiej strony wykonać przeładowanie, jeśli załadowana strona została wywołana bez parametru). Nie potrafię chyba prościej tego opisać Ten post edytował stardar 10.08.2020, 15:50:30 |
|
|
10.08.2020, 16:00:22
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
A czy ten panel jest odseparowany od tego, co chcesz zrobić? Innymi słowy, czy możesz go edytować czy chcesz napisać coś kompletnie odrębnego?
Bo wiesz, w takiej odrębności nie ma nic złego, tylko trzeba to zrobić tak, żeby po kilku tygodniach nie zrobił się bałagan. Przypisywanie na sucho w kodzie ID do czegoś jest kompletnie nieczytelne. Jeśli ta apka Laravelowa ma zostać niezmieniona, to może chociaż zrób sobie własny mini-panel do łączenia kategorii z tym, co potrzebujesz? Mógłbyś generować nawet zwykły plik JSON tym. Ale najlepszym rozwiązaniem byłoby tak ukształtować ten panel, żeby spełniał Twoje potrzeby. |
|
|
10.08.2020, 16:24:25
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2020 Ostrzeżenie: (0%) |
Panel ma odrębną, zamkniętą strukturę i swoje zadanie spełnia moim zdaniem bardzo dobrze.
Moim zadaniem jest stworzenie strony, która czyta dane wprowadzane w panelu i wyprowadzone na zewnątrz poprzez tablicę array. I z tym właśnie mam problem. Dane są stałe, mają określoną strukturę, np. $category->last_article->title to id ostatniego posta w danej kategorii. Te dane sobie wyprowadziłem i działają dobrze. Bardziej zaawansowane rzeczy, jak problem w obliczu którego stanąłem to dla mnie ciężka materia, walczę nad rozwiązaniem już 5 dzień. No ale jak się nie ma wystarczającej wiedzy... Dlatego zdecydowałem się poprosić o pomoc tutaj. |
|
|
10.08.2020, 17:23:52
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Jest jeszcze taki problem z Twoim skryptem, że czytasz $_SERVER['REQUEST_URI'], który zawiera też query string. Czyli jak dasz ?a=1 na końcu swojego URL-a, to już nie zadziała. Nie wiem, ja z zasady nie podejmuję się naprawiania kodu, z którym się nie zgadzam. Dziwne to, że używasz osobnych plików PHP i czytasz który to plik z $_SERVER['REQUEST_URI']. Lepiej byłoby to napisać od początku i przypuszczam, że te osobne pliki PHP to też jest kiepski pomysł.
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 12:59 |