Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]modyfikacja pętli for
Forum PHP.pl > Forum > Przedszkole
limonka
Witam,

to mój pierwszy post na tym forum. Gdy zachowam się nieodpowiednio, dajcie znać.

Piszę skrypt, który dużo liczy. Bardzo dużo.

Cała jego idea opiera się na pętlach for oraz if.

Chciałem uprościć skrypt i go zautomatyzować (zmienna liczba pętli).

Idea:

CODE
for(..)
{
if(warunek)
{
for(..)
{
(dalej ciąg if/for)
}}
else
{
break
}}



Chciałem użyć modułów w postaci funkcji wywoływanych.


CODE
for(..)
{
if(..)
{
funkcja();
}
else
{
break
}

funkcja()
{
for(..)
{
if(..)
{
funkcja2();
}
else
{
funkcji3();
}
}}

itd


Czy takie zastosowanie jest poprawne. Jakie może mieć wady. Jak przenieść globalnie wartości zmiennych (parametr global?)
Oczywiście istnieje też funkcja przerywająca np. funkcja5()

Z góry dzięki za pomoc. Jeśli mało czytelne mogę jakoś próbować to rozjaśnić pod względem idei;)
IceManSpy
1. Używaj znaczników php, a nie code.
2. PHP nie jest najlepszy do wykonywania długich skryptów. Domyślnie po 30 albo 60 sekundach przerwie Ci go.
3. Zmiennych globalnych się już nie używa.
4. Powiedz coś więcej na temat skryptu, który ma coś liczyć.
Sephirus
@up
ad. 2. To nie jest do końca prawda - można to przecież zmienić na serwie lub poprzez chociażby set_time_limit() - oczywiście używać należy z rozwagą. (Co do tego że PHP to nie najlepszy kombajn do liczenia się zgadzam) smile.gif

Możesz skorzystać ze statycznych właściwości klas zamiast zmiennych globalnych na przykład, zrobić tzw. rejestr i trzymać w nim wszystkie potrzebne zmienne a także operować na nich.

Najprostsze możliwe rozwiązanie:

  1.  
  2. class rejestr
  3. {
  4. public static $zmienne;
  5. }
  6.  
  7. rejestr::$zmienne = array([...tu_dajesz_zmienne]);
  8.  
  9. // wykorzystanie przykładowe
  10.  
  11. rejestr::$zmienne['a'] = rejestr::$zmienne['b'] + 4;
  12.  
  13. // lub
  14.  
  15. $zm = rejestr::$zmienne;
  16.  
  17. $zm['a'] = $zm['b'] + 4;
  18.  
  19. rejestr::$zmienne = $zm;
  20.  


Ogólnie do tematu można podejść wieloma drogami, można dać singleton itp. Użycie zmiennych globalnych w ostateczności też ujdzie ale popieram przedmówcę, że rzadko się już to stosuje.
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.