Autor | Zpráva | ||
---|---|---|---|
kuba123 Profil * |
#1 · Zasláno: 15. 6. 2013, 21:22:49 · Upravil/a: kuba123
Můžete poradit jak vyřešit toto? Nejsem si jist zde While je správně použité nebo použít jiný příkaz?
WHILE(list($k,$i)=explode(",","birthday, gender, bodytype, orientation, cat, country, city, height, weight, search_gender, sign, regdate, editdate, usertype")): // SOME CODE HERE ENDWHILE Celá metoda zde: public function getQuery($type){ $sr = explode(',',C_SR_COLUMNS); if ( $type=="general" ){ // POŘADÍ VSTUPNÍCH SUBSTRINGŮ JE DANÉ TABULKOU! WHILE(list($k,$i)=explode(",","birthday, gender, bodytype, orientation, cat, country, city, height, weight, search_gender, sign, regdate, editdate, usertype")): IF ( $k>=4 AND $k<=19 AND $k<>14 AND $k<>18): // Zde se vytváří switch($i): case "cat": $i="purposes"; // přejmenovat požadavek na jméno sloupce case "sign": $i="horo"; // přejmenovat požadavek na jméno sloupce case "regdate": CorrectDate($i); case "editdate": CorrectDate($i); default: $this->query->columns .= (IsAccess($sr[$k])) ? ",$i" : ""; endswitch; ENDIF; ENDWHILE; return $this->query->columns; } } (Vypadá to že while se zacyklilo) |
||
Alphard Profil |
#2 · Zasláno: 15. 6. 2013, 21:53:16
Není rozumné volat explode() znovu při každé iteraci, nikdy se nedostanete dál než k prvnímu prvku. Jak má fungovat ten list nevím, zpracuje jen první 2 proměnné, žádná z nich nebude klíč. Switch nebude fungovat správně, protože v jednotlivých prvcích pole budou na začátku mezery. Opravdu chcete vše nechat propadnout, nemá tam být i break?
Měl byste se vrátit k základům. |
||
kuba123 Profil * |
#3 · Zasláno: 15. 6. 2013, 22:34:39
break tam nemá být, ten je správně
|
||
peta Profil |
explode - rozdeli string do pole podle carky, tato operace se vzdy zdari pro tvuj string
list - vytahne ve tvem pripade prvni 2 prvky z pole, tj $k='birthday'; $i=' gender'; (viz Alphard, explodujes podle carky bez mezery, takze mezera zustava), tato operace se pro tve pole vzdy zdari
WHILE(true) - takze, kdyz to cele prepises, zustane ti while s podminkou true, coz podle manualu znamena nekonecny cyklus, http://cz2.php.net/while
Navic je zcela zbytecne v kazdem cyklu opakovat tutez operaci, viz Alphard. Mno, a pak tu mas ty dalsi veci, ktere Alphard zminuje. $i=' gender'; - jestlize $i bude vzdy gender, pak je zbytecny switch($i), protoze vysledek bude vzdy $this->query->columns .= (IsAccess($sr[$k])) ? ",$i" : ""; IF ( $k>=4 AND $k<=19 AND $k<>14 AND $k<>18): // navic si nejsem jisty, zda php zkousne <> misto !== a tez je rozdil mezi && a and. Prijde mi to jako prepis neceho z packalu. |
||
Časová prodleva: 11 let
|
0