Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: is_<type> VS (type)
Forum PHP.pl > Forum > PHP
orson
witam ...

pytanie teoretyczne ... czy wystarczy type casting przy operacjach na zmiennych questionmark.gif np:
  1. <?php
  2. $keys = array_keys((array) $zmienna_nie_pewna_co_do_wartosci);
  3. ?>

by uzyc tego np. w for() ? wiadomo jak to nie array to bedzie pusty i for sie nie wykona ...pytam bo pisze aktualnie projekt i operuje na bardzo wielu zmiennych ktore moga byc lub nie np. typu array i juz sie platam w tych ifach ... czy to bezpieczne ? czy lepiej jednak sprawczac is_array() questionmark.gif

pozdrawiam
nospor
Na mój gust to lepiej sprawdzaj is_array. Unikniesz niepotrzebnych błędów. Nawet jeśli teraz nie widzisz w tym problemu, uwierz mi, że z czasem się pojawią (wiem z doświadczenia ) biggrin.gif
orson
witam ...

ale jakich bledow questionmark.gif moze jakis przyklad ... bo narazie stosuje type cast i nie mam zadnych problemow ... i type casting jest chyba kapke wydajniejszy niz 15 000 is arrayow na funkcjie ...

pozdrawiam
dasko
Jeśli wszystkie zmienne będziesz traktował jako tablice - to wg mnie jest to całkowicie bezpieczne - (array)$var == array($var). Ale niestety - wtedy ta 'zwykla' zmienna będzie musiała wyglądać np tak: $var[0].
scanner
1500 razy is_array() ? I to w jednej pętli?
IMHO zacznij pisać od nowa, bo gdzieś popełniasz poważny błąd projektowy.
orson
witam ...

to jest skrypt ktory pobiera staty z serwisu z danego miesiaca [duzy serwis, naprawde duuuuuuuzy], w ostatni dzien miesiaca i potem przeksztalca je tak by zapisac do zbiorczych [z wielu tabel robi wpisy do tabel - dzien, miesiac, rok] ... te 15 000 to juz i tak po ogromnej optymalizacji ... poprzednik moj gdy opracowywal skrypt nie bral pod uwage duzego wzrostu odwiedzin i do niedawna bylo jeszcze 750 000 interacji w petli ... narazie sie sprawdza wiec zostane przy rzutowaniu ...

ps. nie ma tam 15 000 opearacji na bazach - wyjasniam dla pewnosci - samych zapytan jest okolo 2 000. co do wydajnosci - staty sa gromadzone na dedykowanym serwerze [ 2 proce i 4 gb ram], obciazenie nie przekracza 60-70 %, a cale obliczenia miesieczne wykonywane w nocy trwaja okolo 15 - 20 min.

pozdrawiam
hawk
Jeżeli wszystko, co nie jest tablicą, rzutuje się na pustą tablicę, to IMHO jest to bezpieczene. Co do wydajności, nie jestem pewny, ale wydaje mi się, że rzutowanie jest wolniejsze. Bo co tak naprawdę zrobi php?
- sprawdzi, czy zmienna nie jest tablicą
- jeżeli nie jest, zamieni na tablicę
- następnie musi wykonać np. array_key_exists na pustej tablicy, co też trochę zajmuje

Natomiast wygody pisania i przejrzystości kodu nie da się już zmierzyć.
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.