![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 8.03.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam coś takiego:
Potrzebuję to do zrobienia liderów z danych kategorii. To co napisałem działa bardzo dobrze, ale coś czuję że jest bardzo mało logicznie/profesjonalnie/dobrze... (IMG:style_emoticons/default/smile.gif) Jestem perfekcjonistą, i skoro już coś robię, to chcę to zrobić dobrze. A więc jak zrobić to logicznie/profesjonalnie/dobrze? BTW. $show = $_POST['show'] Ten post edytował pawel.ad 26.03.2010, 20:11:10 |
|
|
![]()
Post
#2
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Proponuję zamianę na switch
Jest to czytelniejsze i prostsze w rozbudowie o nowe warunki. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
To jest kolejna ciekawa wersja do użycia Ten post edytował zend 26.03.2010, 20:42:45 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 8.03.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Wiedziałem że da się lepiej! ;-)
Dzięki za pomoc. OK, to teraz lepiej array, czy switch? (IMG:style_emoticons/default/smile.gif) I znowu, chodzi mi o to co jest bardziej profesjonalne itp., itd. Ten post edytował pawel.ad 26.03.2010, 20:50:19 |
|
|
![]()
Post
#6
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Cytat I znowu, chodzi mi o to co jest bardziej profesjonalne itp., itd. Każde rozwiązanie, które: - działa zgodnie z oczekiwaniem, nie powodując błędów i notice'ów - jest czytelne - jest bezproblemowe do modyfikacji przez kogoś, kto zobaczy to pierwszy raz na oczy - odpowiednio sformatowane (wcięcia, nawiasy itp.) - z komentarzami wyjaśniającymi, co "autor miał na mysli", gdy rozwiązanie jest niestandardowe, ale z zachowaniem pierwszego punktu |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 8.03.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje bardzo.
Robię ze switch. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje bardzo. Robię ze switch. W takim przypadku moim zdaniem array jest lepszy, większa czytelność kodu - bo będzie go mniej. Jednak zamiast tego isset użyłbym array_key_exists Ten post edytował fifi209 26.03.2010, 21:16:59 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli mnie pamięc nie myli to array_key_exists jest wolniejsze od isset, dlatego warunek z isset (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli mnie pamięc nie myli to array_key_exists jest wolniejsze od isset, dlatego warunek z isset (IMG:style_emoticons/default/smile.gif) A mógłbyś to poprzeć jakimiś testami? (IMG:style_emoticons/default/smile.gif) Moim zdaniem, jeżeli coś jest stworzone do konkretnego zadania to jest wydajniejsze i bardziej optymalne. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
"array_key_exists(), at least in 5.2.4, passes the array by value. I conclude this from seeing performance worsen as the array to search got bigger. isset() doesn't have this problem."
performance Wierzę im na słowo honoru (IMG:style_emoticons/default/czarodziej.gif) PS. a jeśli ktoś nie jest taki ufny jak ja może bez problemu przeprowadzić testy (IMG:style_emoticons/default/smile.gif) Chętnie dowiem się, że miałem rację (IMG:style_emoticons/default/aarambo.gif) Ten post edytował zend 26.03.2010, 22:04:51 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
Rozwiązanie na tablicach jest moim zdaniem bardziej czytelne. A co do szybkości, isset jest szybsze choćby ze względu na fakt że jest wyrażeniem, nie jest funkcją.
Nie sądzę aby w tym wypadku szybkość miała znaczenie. Mówimy tutaj operacji w fazie wyświetlania wyników i mikrosekundy na tym etapie są mało istotne. Szybkość ma większe znaczenie w fazie wyciągania danych z bazy. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
To ja tylko może wspomnę że switch jest szybszy niż if/elseif/
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Rozwiązanie na tablicach jest moim zdaniem bardziej czytelne. A co do szybkości, isset jest szybsze choćby ze względu na fakt że jest wyrażeniem, nie jest funkcją. Nie sądzę aby w tym wypadku szybkość miała znaczenie. Mówimy tutaj operacji w fazie wyświetlania wyników i mikrosekundy na tym etapie są mało istotne. Szybkość ma większe znaczenie w fazie wyciągania danych z bazy. isset nie jest funkcją? a czym? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Cytat Note: Because this is a language construct and not a function, it cannot be called using variable functions Czyli, że isset jest konstrukcją (inaczej elementem składni) języka php (jak echo). Poza tym array_key_exists() na pewno działa wolniej przy bardzo dużych tablicach, ponieważ mimo wszystko sprawdza klucze, dopóki nie natrafi na ten właściwy, albo dopóki tablica się nie skończy. Tymczasem w isset podajemy konkretny klucz z tablicy.EDIT: Źródło: PHP Manual Ten post edytował mortus 27.03.2010, 10:45:05 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Ooo (IMG:style_emoticons/default/smile.gif) Widzę, że wątek ciekawie się rozwinął(mimo braku testów (IMG:style_emoticons/default/smile.gif) ). Dla osób które czytają wątek i nie wiedzą o co chodzi, to tak jakby tablice przetwarzać funkcją foreach, zamiast for
foreach - array_key_exists for - isset Takie szczegóły mają znaczenie dobiero wtedy kiedy przeszukiwana tablica ma powyżej tysiąca elementów, ale itak nie zaszkodzi wiedzieć |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Przy okazji nadmienię pewną różnicę pomiędzy isset a array_key_exists. Cenne spostrzeżenie. (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cenne spostrzeżenie. (IMG:style_emoticons/default/smile.gif) Obecnie przygotowuje się do egzaminu ZCE, tak więc jestem na bieżąco z takimi ciekawostkami PHP (IMG:style_emoticons/default/winksmiley.jpg) Odnośnie funkcji isset to ma ona pewną przewagę nad array_key_exists. Można jej użyć w ten sposób:
Funkcja unset również może przyjąć wiele argumentów. Ten post edytował AdamAdax 27.03.2010, 11:25:26 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 00:54 |