Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zoptymalizowanie kodu pomocy :(
login5555
post 26.12.2011, 21:52:41
Post #1





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


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;}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
prowseed
post 26.12.2011, 22:31:56
Post #2





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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()

Ten post edytował prowseed 26.12.2011, 22:42:21


--------------------
Go to the top of the page
+Quote Post
mortus
post 26.12.2011, 22:39:41
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


  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().

Ten post edytował mortus 26.12.2011, 22:41:17
Go to the top of the page
+Quote Post
login5555
post 26.12.2011, 23:11:52
Post #4





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Niktoś
post 26.12.2011, 23:43:06
Post #5





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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. }


Ten post edytował Niktoś 27.12.2011, 00:34:03
Go to the top of the page
+Quote Post
login5555
post 27.12.2011, 00:06:15
Post #6





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


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 ...
Go to the top of the page
+Quote Post
Niktoś
post 27.12.2011, 00:07:54
Post #7





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Niktoś 27.12.2011, 00:17:35
Go to the top of the page
+Quote Post
ShadowD
post 27.12.2011, 00:14:00
Post #8





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Mógł byś powiedzieć do czego służy ten kolos? snitch.gif


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
login5555
post 27.12.2011, 00:42:11
Post #9





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


  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

Go to the top of the page
+Quote Post
Niktoś
post 27.12.2011, 00:45:15
Post #10





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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. }


Ten post edytował Niktoś 27.12.2011, 00:56:29
Go to the top of the page
+Quote Post
login5555
post 27.12.2011, 00:57:11
Post #11





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


ź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
Go to the top of the page
+Quote Post
Niktoś
post 27.12.2011, 01:00:41
Post #12





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Jakoś to Nam od tyłka strony przedstawiasz a początek tej pętli?
Go to the top of the page
+Quote Post
login5555
post 27.12.2011, 01:13:16
Post #13





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Niktoś
post 27.12.2011, 01:39:55
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
login5555
post 27.12.2011, 02:26:11
Post #15





Grupa: Zarejestrowani
Postów: 0
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


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 :/
Go to the top of the page
+Quote Post
prowseed
post 27.12.2011, 19:55:40
Post #16





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 21:11