Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zoptymalizowanie kodu pomocy :(
Forum PHP.pl > Inne > Hydepark
login5555
witam muszę zoptymalizować ten wycinek kodu i nie mam pomysłu jak to inaczej sformułować i co zrobić żeby ten kod nie męczył tak przeglądarki
dodam tylko ze ten kod powtarza się 10krotnie z jeszcze innymi zmiennymi tych zmiennych jest ok 100


  1. $i++;
  2. if ($liczba[20]!=$zmienna0 and $liczba[21]!=$zmienna0 and $liczba[2]!=$zmienna0 and $liczba[3]!=$zmienna0 and $liczba[4]!=$zmienna0 and $liczba[5]!=$zmienna0 and $liczba[6]!=$zmienna0 and $liczba[7]!=$zmienna0 and $liczba[8]!=$zmienna0 and $liczba[9]!=$zmienna0 and $liczba[10]!=$zmienna0 and $liczba[11]!=$zmienna0 and $liczba[12]!=$zmienna0 and $liczba[13]!=$zmienna0 and $liczba[14]!=$zmienna0 and $liczba[15]!=$zmienna0 and $liczba[16]!=$zmienna0 and $liczba[17]!=$zmienna0 and $liczba[18]!=$zmienna0 and $liczba[19]!=$zmienna0 ) {$a00[$i]=1;}else {$a00[$i]=0;}
  3. if ($liczba[20]!=$zmienna1 and $liczba[21]!=$zmienna1 and $liczba[2]!=$zmienna1 and $liczba[3]!=$zmienna1 and $liczba[4]!=$zmienna1 and $liczba[5]!=$zmienna1 and $liczba[6]!=$zmienna1 and $liczba[7]!=$zmienna1 and $liczba[8]!=$zmienna1 and $liczba[9]!=$zmienna1 and $liczba[10]!=$zmienna1 and $liczba[11]!=$zmienna1 and $liczba[12]!=$zmienna1 and $liczba[13]!=$zmienna1 and $liczba[14]!=$zmienna1 and $liczba[15]!=$zmienna1 and $liczba[16]!=$zmienna1 and $liczba[17]!=$zmienna1 and $liczba[18]!=$zmienna1 and $liczba[19]!=$zmienna1 ) {$a01[$i]=1;}else {$a01[$i]=0;}
  4. if ($liczba[20]!=$zmienna2 and $liczba[21]!=$zmienna2 and $liczba[2]!=$zmienna2 and $liczba[3]!=$zmienna2 and $liczba[4]!=$zmienna2 and $liczba[5]!=$zmienna2 and $liczba[6]!=$zmienna2 and $liczba[7]!=$zmienna2 and $liczba[8]!=$zmienna2 and $liczba[9]!=$zmienna2 and $liczba[10]!=$zmienna2 and $liczba[11]!=$zmienna2 and $liczba[12]!=$zmienna2 and $liczba[13]!=$zmienna2 and $liczba[14]!=$zmienna2 and $liczba[15]!=$zmienna2 and $liczba[16]!=$zmienna2 and $liczba[17]!=$zmienna2 and $liczba[18]!=$zmienna2 and $liczba[19]!=$zmienna2 ) {$a02[$i]=1;}else {$a02[$i]=0;}
  5. if ($liczba[20]!=$zmienna3 and $liczba[21]!=$zmienna3 and $liczba[2]!=$zmienna3 and $liczba[3]!=$zmienna3 and $liczba[4]!=$zmienna3 and $liczba[5]!=$zmienna3 and $liczba[6]!=$zmienna3 and $liczba[7]!=$zmienna3 and $liczba[8]!=$zmienna3 and $liczba[9]!=$zmienna3 and $liczba[10]!=$zmienna3 and $liczba[11]!=$zmienna3 and $liczba[12]!=$zmienna3 and $liczba[13]!=$zmienna3 and $liczba[14]!=$zmienna3 and $liczba[15]!=$zmienna3 and $liczba[16]!=$zmienna3 and $liczba[17]!=$zmienna3 and $liczba[18]!=$zmienna3 and $liczba[19]!=$zmienna3 ) {$a03[$i]=1;}else {$a03[$i]=0;}
  6. if ($liczba[20]!=$zmienna4 and $liczba[21]!=$zmienna4 and $liczba[2]!=$zmienna4 and $liczba[3]!=$zmienna4 and $liczba[4]!=$zmienna4 and $liczba[5]!=$zmienna4 and $liczba[6]!=$zmienna4 and $liczba[7]!=$zmienna4 and $liczba[8]!=$zmienna4 and $liczba[9]!=$zmienna4 and $liczba[10]!=$zmienna4 and $liczba[11]!=$zmienna4 and $liczba[12]!=$zmienna4 and $liczba[13]!=$zmienna4 and $liczba[14]!=$zmienna4 and $liczba[15]!=$zmienna4 and $liczba[16]!=$zmienna4 and $liczba[17]!=$zmienna4 and $liczba[18]!=$zmienna4 and $liczba[19]!=$zmienna4 ) {$a04[$i]=1;}else {$a04[$i]=0;}
  7. if ($liczba[20]!=$zmienna5 and $liczba[21]!=$zmienna5 and $liczba[2]!=$zmienna5 and $liczba[3]!=$zmienna5 and $liczba[4]!=$zmienna5 and $liczba[5]!=$zmienna5 and $liczba[6]!=$zmienna5 and $liczba[7]!=$zmienna5 and $liczba[8]!=$zmienna5 and $liczba[9]!=$zmienna5 and $liczba[10]!=$zmienna5 and $liczba[11]!=$zmienna5 and $liczba[12]!=$zmienna5 and $liczba[13]!=$zmienna5 and $liczba[14]!=$zmienna5 and $liczba[15]!=$zmienna5 and $liczba[16]!=$zmienna5 and $liczba[17]!=$zmienna5 and $liczba[18]!=$zmienna5 and $liczba[19]!=$zmienna5 ) {$a05[$i]=1;}else {$a05[$i]=0;}
  8. if ($liczba[20]!=$zmienna6 and $liczba[21]!=$zmienna6 and $liczba[2]!=$zmienna6 and $liczba[3]!=$zmienna6 and $liczba[4]!=$zmienna6 and $liczba[5]!=$zmienna6 and $liczba[6]!=$zmienna6 and $liczba[7]!=$zmienna6 and $liczba[8]!=$zmienna6 and $liczba[9]!=$zmienna6 and $liczba[10]!=$zmienna6 and $liczba[11]!=$zmienna6 and $liczba[12]!=$zmienna6 and $liczba[13]!=$zmienna6 and $liczba[14]!=$zmienna6 and $liczba[15]!=$zmienna6 and $liczba[16]!=$zmienna6 and $liczba[17]!=$zmienna6 and $liczba[18]!=$zmienna6 and $liczba[19]!=$zmienna6 ) {$a06[$i]=1;}else {$a06[$i]=0;}
  9. if ($liczba[20]!=$zmienna7 and $liczba[21]!=$zmienna7 and $liczba[2]!=$zmienna7 and $liczba[3]!=$zmienna7 and $liczba[4]!=$zmienna7 and $liczba[5]!=$zmienna7 and $liczba[6]!=$zmienna7 and $liczba[7]!=$zmienna7 and $liczba[8]!=$zmienna7 and $liczba[9]!=$zmienna7 and $liczba[10]!=$zmienna7 and $liczba[11]!=$zmienna7 and $liczba[12]!=$zmienna7 and $liczba[13]!=$zmienna7 and $liczba[14]!=$zmienna7 and $liczba[15]!=$zmienna7 and $liczba[16]!=$zmienna7 and $liczba[17]!=$zmienna7 and $liczba[18]!=$zmienna7 and $liczba[19]!=$zmienna7 ) {$a07[$i]=1;}else {$a07[$i]=0;}
  10. if ($liczba[20]!=$zmienna8 and $liczba[21]!=$zmienna8 and $liczba[2]!=$zmienna8 and $liczba[3]!=$zmienna8 and $liczba[4]!=$zmienna8 and $liczba[5]!=$zmienna8 and $liczba[6]!=$zmienna8 and $liczba[7]!=$zmienna8 and $liczba[8]!=$zmienna8 and $liczba[9]!=$zmienna8 and $liczba[10]!=$zmienna8 and $liczba[11]!=$zmienna8 and $liczba[12]!=$zmienna8 and $liczba[13]!=$zmienna8 and $liczba[14]!=$zmienna8 and $liczba[15]!=$zmienna8 and $liczba[16]!=$zmienna8 and $liczba[17]!=$zmienna8 and $liczba[18]!=$zmienna8 and $liczba[19]!=$zmienna8 ) {$a08[$i]=1;}else {$a08[$i]=0;}
  11. if ($liczba[20]!=$zmienna9 and $liczba[21]!=$zmienna9 and $liczba[2]!=$zmienna9 and $liczba[3]!=$zmienna9 and $liczba[4]!=$zmienna9 and $liczba[5]!=$zmienna9 and $liczba[6]!=$zmienna9 and $liczba[7]!=$zmienna9 and $liczba[8]!=$zmienna9 and $liczba[9]!=$zmienna9 and $liczba[10]!=$zmienna9 and $liczba[11]!=$zmienna9 and $liczba[12]!=$zmienna9 and $liczba[13]!=$zmienna9 and $liczba[14]!=$zmienna9 and $liczba[15]!=$zmienna9 and $liczba[16]!=$zmienna9 and $liczba[17]!=$zmienna9 and $liczba[18]!=$zmienna9 and $liczba[19]!=$zmienna9 ) {$a09[$i]=1;}else {$a09[$i]=0;}
prowseed
zacznij od funkcji in_array() i może odwróć ifa, jeśli zmienna znajduje się w tablicy, to 0, w przeciwnym wypadku 1.
//o, albo z $liczba zrob sobie tablice asocjacyjna i sprawdzaj przez isset()
mortus
  1. ++$i;
  2. for($j = 0; $j <= 9; $j++) {
  3. $arrayName = 'a0' . $j;
  4. $$arrayName[$i] = 1;
  5. $varName = 'zmienna' . $j;
  6. for($k = 2; $k <=21; $k++) {
  7. if($liczba[$k] == $$varName) {
  8. $$arrayName[$i] = 0;
  9. break;
  10. }
  11. }
  12. }

Choć ciężko mi powiedzieć, czy to rzeczywiście zadziała i czy zadziała tak, jak powinno.

EDIT: No i fakt faktem, pętle z $k można zastąpić funkcją in_array().
login5555
pozostała część kodu tego nie akceptuje pokazuje jak by {$a00[$i]=0;} {$a01[$i]=0;} po prostu przestało wyszukiwać ,
ale żadnego błędu nie wywala wiec składnia skryptu jest ok
Niktoś
Może to pójdzie?
  1. $array = array($zmienna0, $zmienna1, $zmienna3, $zmienna4, $zmienna5,$zmienna6,$zmienna7,$zmienna8,$zmienna9);
  2. for ($i=0;$i<count($array);$i++)
  3. {
  4. $arrayName = 'a0' . $i;
  5. foreach($liczba as $value){
  6. if($value!=$array[i]){
  7. $$arrayName[$i]=1;
  8. break;
  9. }else{
  10. $$arrayName[$i]=0;
  11. }
  12. }
  13. }
login5555
widzę że ciężki orzech do zgryzienia sad.gif zrobiła się pętla w nieskończoność i wczytuje tylko 9tą pozycje i tak w kółko pyzatym naprawiłem małe błędy w skrypcie
dalej kicha tamten podrzeni skrypt chyba lepszy był tylko coś mu brakuje ...
Niktoś
miałem błąd w tej linijce
$value==$array[i]
ale poprawiłem na
$value!=$array[i]
Ja tam w swoim skrypcie błędów nie widzę oprócz tego co napisałem.
I nie ma możliwości ,żeby pętla była nieskończona.
ShadowD
Mógł byś powiedzieć do czego służy ten kolos? snitch.gif
login5555
  1. $i++; //// niestety pętla musi się tu zacząć
  2.  
  3. $array = array($zmienna0, $zmienna1, $zmienna3, $zmienna4, $zmienna5,$zmienna6,$zmienna7,$zmienna8,$zmienna9);
  4. for ($i=0;$i<count($array);) //////a nie tu
  5. {
  6. $arrayName = 'a0' . $i;
  7. foreach($liczba as $value){
  8. if ($value==$array[$i]){ /// tu ma być $i czy i
  9. $arrayName[$i]=1; /// podwójne $$ czy pojedyncze
  10. }else{
  11. $arrayName[$i]=0; ///tu to samo $$ czy $
  12. }
  13. }
  14. }


dalej się zapętlą w nieskończoność
a ta cześć kodu odpowiada za wyszukanie 20 liczb ze 100 zmiennych które spełniają warunek
a w ogóle całość programu wyszukuje największe prawdopodobieństwo losowo wybranych 100 liczb
na podstawie wcześniej wylosowanych i przyznam ciałkiem nie źle mu to wychodzi tyle ze serwer nie wytrzymuje tego i wywala błędy
dlatego proszę o zmniejszenie kodu

Niktoś
Spróbuj wkleić tak jak to u góry w moim przykładzie jest i nic nie zmieniać.To masz tam jakąś pętle jeszcze? i to na i?Ech to wklej mój przykład i zmień wszystkie literki na j.
  1. $array = array($zmienna0, $zmienna1, $zmienna3, $zmienna4, $zmienna5,$zmienna6,$zmienna7,$zmienna8,$zmienna9);
  2. for ($j=0;$j<count($array);$j++)
  3. {
  4. $arrayName = 'a0' . $j;
  5. foreach($liczba as $value){
  6. if($value!=$array[$j]){
  7. $$arrayName[$j]=1;
  8. break;
  9. }else{
  10. $$arrayName[$j]=0;
  11. }
  12. }
  13. }
login5555
źle powiedziałem ... dokładnie typuje które być może wypadną teraz

nie zapętla teraz ...tu jest dalsza cześć kodu
  1. if($a00[$i]==1 and $a00[$i-1]==1 and $a00[$i-2]==1 and $a00[$i-3]==1 )
  2. {$text1=1;$col1="0000ff";}else{$text1=0;$col1="00ff00";}
  3. if($a01[$i]==1 and $a01[$i-1]==1 and $a01[$i-2]==1 and $a01[$i-3]==1 )
  4. {$text2=2;$col2="0000ff";}else{$text2=0;$col2="00ff00";}



dalej nie wyszukuje mam zero
Niktoś
Jakoś to Nam od tyłka strony przedstawiasz a początek tej pętli?
login5555
  1. <?php
  2.  
  3. $zmienna0=1;
  4. $zmienna1=2;
  5. $zmienna2=3;
  6. $zmienna3=4;
  7. $zmienna4=5;
  8. $zmienna5=6;
  9. $zmienna6=7;
  10. $zmienna7=8;
  11. $zmienna8=9;
  12. $zmienna9=10;
  13.  
  14.  
  15. $lista = file('losowanie.txt');
  16. $i=0 ;
  17.  
  18.  
  19. {
  20. foreach ($lista as $liczby)
  21. {
  22. $liczba = explode(' ',$liczby);
  23.  
  24. if ($liczba[0]) {
  25. $i++;
  26.  
  27.  
  28. /// tak to wygląda od początku
  29. /// tu teraz jest kod ktury robisz i potem
  30.  
  31. if($a00[$i]==1 and $a00[$i-1]==1 and $a00[$i-2]==1 and $a00[$i-3]==1 )
  32. {$text1=1;$col1="0000ff";}else{$text1=0;$col1="00ff00";}
  33. if($a01[$i]==1 and $a01[$i-1]==1 and $a01[$i-2]==1 and $a01[$i-3]==1 )
  34. {$text2=2;$col2="0000ff";}else{$text2=0;$col2="00ff00";}
  35. if($a02[$i]==1 and $a02[$i-1]==1 and $a02[$i-2]==1 and $a02[$i-3]==1 )
  36. {$text3=3;$col3="0000ff";}else{$text3=0;$col3="00ff00";}
  37. if($a03[$i]==1 and $a03[$i-1]==1 and $a03[$i-2]==1 and $a03[$i-3]==1 )
  38. {$text4=4;$col4="0000ff";}else{$text4=0;$col4="00ff00";}
  39. if($a04[$i]==1 and $a04[$i-1]==1 and $a04[$i-2]==1 and $a04[$i-3]==1 )
  40. {$text5=5;$col5="0000ff";}else{$text5=0;$col5="00ff00";}
  41. if($a05[$i]==1 and $a05[$i-1]==1 and $a05[$i-2]==1 and $a05[$i-3]==1 )
  42. {$text6=6;$col6="0000ff";}else{$text6=0;$col6="00ff00";}
  43. if($a06[$i]==1 and $a06[$i-1]==1 and $a06[$i-2]==1 and $a06[$i-3]==1 )
  44. {$text7=7;$col7="0000ff";}else{$text7=0;$col7="00ff00";}
  45. if($a07[$i]==1 and $a07[$i-1]==1 and $a07[$i-2]==1 and $a07[$i-3]==1 )
  46. {$text8=8;$col8="0000ff";}else{$text8=0;$col8="00ff00";}
  47. if($a08[$i]==1 and $a08[$i-1]==1 and $a08[$i-2]==1 and $a08[$i-3]==1 )
  48. {$text9=9;$col9="0000ff";}else{$text9=0;$col9="00ff00";}
  49. if($a09[$i]==1 and $a09[$i-1]==1 and $a09[$i-2]==1 and $a09[$i-3]==1 )
  50. {$text10=10;$col10="0000ff";}else{$text10=0;$col10="00ff00";}
  51.  
  52.  
  53.  
  54.  
  55. '.$text1. ','.$text2 .':
  56.  
  57.  


o ile zmiennych jest 10 to nie ma większego problemu ale jak dałem 10x więcej zmiennych to klapa
Niktoś
I to Tobie działało w ogóle?
Przy pierwszym obrocie pętli powinno już sypnąć błędami
if($a00[$i]==1 and $a00[$i-1]==1 and $a00[$i-2]==1 and $a00[$i-3]==1 )

podstaw pod [$i] liczbę np 0 i otrzymujesz tablicę z ujemną liczbą elementów -nie wiem że to się nie wysypało.
login5555
tu jest działający skrypt tyle ze muli http://www.tetek.ugu.pl/betgun-p.php
jak widać 1 10 komórek nie działa tam właśnie jest twój kod pozostałem maja mój
działa i na serwie lokalnym i na serwie zewnętrznym jak widać heh

tyle ze to właśnie ten kod który podałem na początku powoduje problemy ze względu na swoja wielkość
błędy na serwie są co 150 wierszy mogę je zniwelować poprzez wywalenie tabeli do 1000 wierszy ale i tak ogólnie bedzie to jeden wielki namuł

tyle ze to właśnie ten kod który podałem na początku powoduje problemy ze względu na swoja wielkość
błędy na serwie są co 150 wierszy mogę je zniwelować poprzez wywalenie tabeli do 1000 wierszy ale i tak ogólnie będzie to jeden wielki zamuł

tak czy inaczej wielki dziex za próbę

ten mały skrypt nie zadziała bo on podaje tylko 1 zmienną podczas 1 obrotu pętli $i a musi podać wszystkie 9 jednocześnie :/
prowseed
Cytat(Niktoś @ 27.12.2011, 00:45:15 ) *
  1. for ($j=0,$cos=count($array);$j<$cos;$j++)
  2. {


nei zpaominajmy o tym smile.gif
podobno szybciej
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.