Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]issety, issety
noemail
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.07.2015

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


Pytam z ciekawości... może ktoś wie... otóż ciagle natykam się na konieczność sprawdznia issetem i zastanawiam się na czymś takim:

  1. if ( isset( $ARRAY[ $key ] ) )
  2. {
  3. $val = $ARRAY[ $key ];
  4. }


isset zwraca tylko bool, a czemu nie mogę znaleźć info na temat wbudowanego elementu języka, który by od razu zwrócił wartość lub null jeśli wartości nie ma?

Zapewne klucze są trzymane w innym miejscu co wartości i dlatego isset tylko zwraca tylko bool.... ale mimo wszystko wbudowana funkcja mogłaby zwrócić wartość szybciej... a co gorsza, wszędzie znajduję przykłady, że ludzie sami piszą własne funkcje wykonujące isset i zwracające wartość lub null... tymczasem jest to kolejne dokładanie nadmiarowego kodu do wykonania. Jaki to ma sens? Jak to możliwe, że w php nie ma czegoś takiego?
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


https://wiki.php.net/rfc/isset_ternary
Go to the top of the page
+Quote Post
noemail
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.07.2015

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


No fajnie... czyli będzie w php 7... szkoda, że dopiero 7
Go to the top of the page
+Quote Post
frydry
post
Post #4





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 2.04.2015

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


Nie wiem czy też o to Ci chodzi, ale możesz użyć funkcji
.
Albo funkcji
w sposób
  1. $klucze= array_keys($tablica);
  2. if(isset($klucze[0]))


lub jeśli chodzi Ci o wartość to funkcja in_array sprawdza czy w tablicy znajduje się dana wartość.

Ten post edytował frydry 20.08.2015, 10:17:48
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
No fajnie... czyli będzie w php 7... szkoda, że dopiero 7
Nikt ci nie broni napisac funkcji, do ktorej zapodasz tablice i klucz a ona zwroci co to co chcesz.


A zamiast dlugiego if co teraz masz mozesz robic:

$val = isset($tab['key']) ? $tab['key'] : null;
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





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

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


Lub jeśli jesteś sadystą, masochistą, szowinistą, gimbazą... (tutaj dalej lista niecezuralnych słów)...
to możesz dać:

Kod
$val = $tab['key'] ?: null;

Ale to chyba tylko od php 5.4 >=
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@Pyton no ale nie rzuci to przypadkiem noticem gdy nie bedzie klucza?

edit: odpowiadam sam sobie: oczywiscie ze rzuci noticem... wiec chyba to mial na mysli pyton uzywajac tych wszystkich obrazliwych slow (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
blahy
post
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

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


odpowiadajac na pytanie - wbudowanym mechanizmem jezyka jest $a[0] - zwroci element o indeksie 0 albo null (i notice)
mozna zrobic @$a[0] - wtedy bedzie doklanie to o co chodzi, bez notice - super to nie jest, ale jest to mechanizm jezyka, na.wet bez dodatkowej funkcji jesli ktos jej nie chce.
isset jak sama nazwa wskazuje zwraca informacje, czy cos jest ustawione, zwracanie elementu byloby nielogiczne.
a php7 bedzie juz niedlugo.
isset($a[0]) ? $a[0] : null; juz bylo napisane wczesniej (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 23:51