Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]issety, issety
Forum PHP.pl > Forum > Przedszkole
noemail
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?
viking
https://wiki.php.net/rfc/isset_ternary
noemail
No fajnie... czyli będzie w php 7... szkoda, że dopiero 7
frydry
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ść.
nospor
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;
Pyton_000
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 >=
nospor
@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 biggrin.gif
blahy
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 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.