![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuje zrzutowac array na bool ale istnieja 2 mozliwosc:
Pozniej jak sprawdzam var_dump($w) to zarowno pierwszy sposob jak i drugi powoduje ze zmienna $w jest typu bool. Ale czy istnieja jakies subtelne roznice miedzy pierwszym sposobem a drugim czy takich nie ma i zalezy to tylko od upodobania programisty? Ten post edytował MySQL 13.05.2009, 13:14:28 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#2
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
W pierwszym przykładzie najpierw przypisujesz zmiennej wartość, a następnie rzutujesz ją. W drugim przypadku odwrotnie.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
A czy wplywa to na efektywnosc?
Wydaje mnie sie ze pierwszy sposob jest bardziej "pracochlonny" poniewaz: 1. Zwrocona wartosc jest przypisywana do $w 2. Nastepuje zrzutowanie 3. Nastepnie przypisanie ponowne do $w wartosci nowego typu. Czyli cos jakby $w = (bool)$w = mysql_fetch_row(mysql_query($sql)); A w drugim przykladzie zwracana wartosc jest rzutowana, a nastepnie przypisywana do $w. Tak sobie to wymyslilem. Nie wiem, moze moje rozumowanie jest bledne... -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pisane z palca. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@mysql a co ty chcesz tym rzutowanie osiągnąć?
Bo o wiele, wiele szybsze jest poprostu empty()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
nospor fakt. Jest szybsze. Ale w moim przypadku jeżeli miałbym użyć konstrukcji
$w = !empty(mysql_fetch_rows(mysql_query($sql))) to rozwiązanie zawiedzie, gdyż empty() oczekuje tablicy, a jeżeli mysql_query($sql) zwróci pusty zbiór wyników, to wówczas mysql_fetch_rows(mysql_query($sql)) zwróci false i PHP się wysypie gdyż empty(false) jest niepoduszczalne. A dlaczego muszę mieć akurat taką konstrukcję? Hmm powiedzmy, że takie skrzywienie zawodowe ;-) Po prostu chciałem zobaczyć co jest bardziej wydajne. Myślałem jeszcze nad trzecim rozwiązaniem: $w = (mysql_num_rows(mysql_query($sql)) ? true : false); Crozin przetestowałem wydajność dla tych trzech rozwiązań. Po prostu zapomniałem, że można by było to tak przetestować i oto wyniki (liczby w pętli zmniejszyłem do 100000 bo Twój przykład był dla z góry ustalonej tablicy, a zapytanie do bazy trochę trwa): 1. $w = (mysql_num_rows(mysql_query($sql)) ? true : false); – 8.201815 2. $w = (bool)mysql_fetch_rows(mysql_query($sql)); – 8.260985 3. (bool)$x = mysql_fetch_rows(mysql_query($sql)); – 8.267927 Sposób pierwszy – bezkonkurencyjny Sposób drugi – to dodatkowe 0,60% czasu Sposób trzeci – to dodatkowe 0,81% czasu Zatem dziękuję wszystkim. Wszyscy oczywiście pomogliście (szybszego sposobu już chyba nie ma) :-) Ten post edytował MySQL 14.05.2009, 17:10:37 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat gdyż empty(false) jest niepoduszczalne gdzies ty takie bzdury wyczytal?http://pl2.php.net/manual/en/function.empty.php -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wyczytałem, sprawdziłem. Kiedy w skrypcie napisałem
<?php $tmp = empty(false); ?> to strona cały czas się wczytuje i się nie otwiera. A kiedy usunę tą linijke to wszsytko jest ok. Chociaż przeczytałem o funkcji empty() na php.net.pl i faktycznie może ona przyjąć wartość boolowską. Nie wiem dlaczego tak się dzieje :/ -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no dobra, po czesci masz racje.
nie: empty(false) a:empty($zm) gdzie $zm moze byc false. pozatym ten zapis mysql_num_rows(mysql_query($sql)) jest o kant 4 liter bo jak bedzie blad zapytania to mysql_num_rows zacznie pluc warningami. Kazdy z etapow powinienes rozdzielic , zapisywac do zmiennej i robic odpowiednie sprawdzanie czy jest ok. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 143 Pomógł: 17 Dołączył: 8.11.2008 Skąd: Libiąż Ostrzeżenie: (0%) ![]() ![]() |
No i jest taka prosta sprawa, że empty() nie przyjmuje niczego innego oprócz zmiennych
![]()
No i mi ładnie jechało wyjechało z errorem ![]() ![]() Ten post edytował megawebmaster 14.05.2009, 20:48:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:29 |