Autor | Zpráva | ||
---|---|---|---|
GamerX Profil |
Dobrý den měl bych na vás dvě prozbičky, tou první je jestli by jste mi nemohli zkontrolovat tento kod co jsem napsal, hlavně jestli jsem zprávně definoval ty proměnné $nick, $level atd, a jak ty řetezce potom srovnat od největsiho po nejmenši i když se tam budou třeba nějaka čísla rovnat. Budu moc vděčný za vaši pomoc.
<?php $spojeni = ftp_connect("***"); ftp_login($spojeni, "***", "***"); //pripoji se k serveru $uctu = count(ftp_nlist($spojeni, $cesta)); $contents = ftp_nlist($spojeni, $cesta); $nick[$uctu]; $level[$uctu]; $XP[$uctu]; $bank[$uctu]; $kills[$uctu]; $deaths[$uctu]; $hss[$uctu]; $hod[$uctu]; $min[$uctu]; for($i = 0; $i < $uctu; $i++) { if(!ftp_get($spojeni, "hrac.ini", $contents[$i], FTP_ASCII)) { ftp_close($spojeni); } else { $soubor = fopen("hrac.ini", "r"); $jmeno = str_replace($cesta," ",$contents[$i]); $nick[$i] = str_replace('.ini'," ",$jmeno); $heslo=fgets($soubor); $level[$i]=fgets($soubor); $XP[$i]=fgets($soubor); $bank[$i]=fgets($soubor $kills[$i]=fgets($soubor); $deaths[$i]=fgets($soubor); $hss[$i]=fgets($soubor); $mute=fgets($soubor); $hitman=fgets($soubor); $hod[$i]=fgets($soubor); $min[$i]=fgets($soubor); fclose($soubor); unlink("hrac.ini"); } ftp_close($spojeni); } ?> |
||
Joker Profil |
#2 · Zasláno: 25. 11. 2014, 13:36:19
GamerX:
„hlavně jestli jsem zprávně definoval ty proměnné $nick, $level atd“ Asi ne. Co by to mělo dělat? |
||
GamerX Profil |
#3 · Zasláno: 25. 11. 2014, 13:41:44
Joker:
No jestli jsou ty proměneé dobře vypsané ja myslím že ne protože ja jsem zvykli to psat tako z jiného jazyka takže tu nevím jak to napsat. |
||
Joker Profil |
#4 · Zasláno: 25. 11. 2014, 13:45:45
GamerX:
Tak v PHP to je nesmysl, maximálně to bude generovat chybovou hlášku o neexistujících indexech v poli. |
||
juriad Profil |
#5 · Zasláno: 25. 11. 2014, 13:51:25
GamerX:
Jsi zvyklý deklarovat proměnné. V PHP to není třeba. Je však velice vhodné jim nastavit výchozí hodnoty. U polí se neuvádí velikost, v PHP se pole prostě natáhne. Tedy řádky 6 - 14 by měly být: $nick = array(); ... |
||
GamerX Profil |
#6 · Zasláno: 25. 11. 2014, 13:58:22
juriad:
Moc díky. A ještě k tomu jak chci seřadit ty řetězce od největšího po nejmenší tak abych potom z te funkce co mi to seřadí dostal pozici v řetězci abych k tomu mohli přiřadit i ostatní údaje a vypsat do tabulky jestli to je možné teda. |
||
GamerX Profil |
Tak skusil jsem si něco udělat sám ale nejde to chci získat prvních 15 největších čísel řetežce, takže každý pořadí udělam preš jeden cyklus takže bude 15 cyklu ale nijak se mi ty cykli nechtěj spustit a nevím proč
<?php $spojeni = ftp_connect("****"); ftp_login($spojeni, "****", "****"); //pripoji se k serveru $uctu = count(ftp_nlist($spojeni, $cesta)); $contents = ftp_nlist($spojeni, $cesta); $nick = array(); $level = array(); $XP = array(); $bank = array(); $kills = array(); $deaths = array(); $hss = array(); $hod = array(); $min = array(); for($i = 0; $i < $uctu; $i++) { if(!ftp_get($spojeni, "hrac.ini", $contents[$i], FTP_ASCII)) { ftp_close($spojeni); } else { $soubor = fopen("hrac.ini", "r"); $jmeno = str_replace($cesta," ",$contents[$i]); $nick[$i] = str_replace('.ini'," ",$jmeno); $heslo=fgets($soubor); $level[$i]=fgets($soubor); $XP[$i]=fgets($soubor); $bank[$i]=fgets($soubor); $kills[$i]=fgets($soubor); $deaths[$i]=fgets($soubor); $hss[$i]=fgets($soubor); $mute=fgets($soubor); $hitman=fgets($soubor); $hod[$i]=fgets($soubor); $min[$i]=fgets($soubor); fclose($soubor); unlink("hrac.ini"); } } ftp_close($spojeni); $hodnota = 0; $poradi = array(); for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i]) { $hodnota = $level[$i]; $poradi[14] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[13] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[12] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[11] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[10] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[9] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[8] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[7] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[6] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[5] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[5] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[4] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[4] && $i != $poradi[5] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[3] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[3] && $i != $poradi[4] && $i != $poradi[5] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[2] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[2] && $i != $poradi[3] && $i != $poradi[4] && $i != $poradi[5] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[1] = $i; } } $hodnota = 0; for($i = 0; $i < $uctu; $i++) { if($hodnota >= $level[$i] && $i != $poradi[1] && $i != $poradi[2] && $i != $poradi[3] && $i != $poradi[4] && $i != $poradi[5] && $i != $poradi[6] && $i != $poradi[7] && $i != $poradi[8] && $i != $poradi[9] && $i != $poradi[10] && $i != $poradi[11] && $i != $poradi[12] && $i != $poradi[13] && $i != $poradi[14]) { $hodnota = $level[$i]; $poradi[0] = $i; } } ?> Už jsem na to přišel čím to bylo funguje to ale je to strašně pomalý není nějaký rychlejší způsob? |
||
Taps Profil |
#8 · Zasláno: 26. 11. 2014, 15:47:06
GamerX:
Celý skript, by bylo vhodné zoptimalizovat. |
||
Virtus Profil |
Zdravím, tady trochu tý optimalizace:
1) $uctu = count(ftp_nlist($spojeni, $cesta)); $contents = ftp_nlist($spojeni, $cesta); $contents = ftp_nlist($spojeni, $cesta); $uctu = count($contents); foreach($contents as $key => $fileName){ if(!ftp_get($spojeni, "hrac.ini", $fileName, FTP_ASCII)) { break; } else { $heslo=fgets($soubor); //nemělo by zde být $heslo[$key] = fgets($soubor); ? $level[$key]=fgets($soubor); $XP[$key]=fgets($soubor) //...atd. } } $hracIniPath= 'hrac.ini'; nebo define('HRAC_INI_PATH','hrac.ini');
3) Místo řádku 18 v [#7] stačí použít break; , jinak se zbytečně dvakrát ukončuje spojení na ftp (řádek 38)
4) unlink("hrac.ini"); vyndat z cyklu, neni potřeba vždy soubor smazat, funkce ftp_get() soubor přepíše, poku již existuje, takže unklik dát až za cyklus
5) a teď k tomu řazení :D, myslím že zde by stačilo použít něco takového: asort($level); , případně arsort($level); - v proměnné $level, budou levely seřazeny automaticky, Př.:
$x = array(1=>4,2=>3,3=>15,4=>1); asort($x); var_dump($x); //vypíše: array(4) { [4] => int(1) [2] => int(3) [1] => int(4) [3] => int(15) } |
||
Časová prodleva: 9 let
|
0