Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> NOTICE pętla while
adamantd
post
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


Cześć woła mi NOTICE i wskazuje na linijkę w której jest pętla while,
nie mogę rozkminić dlaczego

  1.  
  2. $i=0;
  3. $ok=0;
  4. while(count($accessTab[$i])>0){
  5. if($_SESSION['adm_access']==$accessTab[$i]){
  6. $ok=1;
  7. }
  8. $i++;
  9. }
  10.  


podpowie ktoś?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Byłoby miło jakbyś uraczył jeszcze nas tym noticem.... ale zapewne chodzi o to, że odwolujesz się do indeksu tablicy, który nie istnieje...

edit:
while(count($accessTab[$i])>0){
Możesz mi napisać, co niby twoim zdaniem robi to cos?
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #3





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


  1.  
  2. Notice: Undefined offset: 2 in C:\WebServ\httpd\medic_localhost\CLASS\adminManager.class.php on line 73
  3.  
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu uzywaj isset zamiast count....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #5





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


Pomogło tylko pytanie czy to będzie działać dokładnie tak samo, ponieważ przed każdym zapętleniem sprawdzam czy tablica jest większa od zera, jeżeli dojdzie do końca to po zliczeniu wartość count wynosiłaby -1.

I pytanie czy: count($tablica[$i]>0), które równa się -1 jest równe isset($tablica[$i]) które się równa false
Go to the top of the page
+Quote Post
matiit
post
Post #6





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Jeszcze tak w ogóle zastanów się nad sensownością tego kodu smile.gif
Powiedz może co chcesz osiągnąć i "razem" napiszemy coś lepszego, ładniejszego.

Go to the top of the page
+Quote Post
adamantd
post
Post #7





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


Pierwszy etap sprawdzenia praw dostępu do poszczególnych zakładek, porównanie zdefiniowanych wcześniej praw dostępu do tego co w sesji
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




while(isset($accessTab[$i]) && count($accessTab[$i])>0){

ps: przenosze na przedszkole bo zeby nie umiec uzyc isset to lekka przesada jak na php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #9





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


to wstyd mi wink.gif dzięki za podpowiedź
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A Ty zapoznaj się z FOREACH bo do latania po pętlach to służy właśnie to.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #11





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


Używam na zmianę foreach, for i while.

foreach używam najczęściej świeżo po wyciągnięciu danych z bazy jak chcę wszystko powyświetlać. W czym jest while gorsze? Foreach inaczej działa, bez względu na to jak są ponumerowane klucze i czy tablica jest assocjacyjna czy numeryczna jedzie po kolei a while po numerach, tutaj jakoś lepiej było mi zastosować while

Ten post edytował adamantd 15.04.2013, 14:03:10
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




FOREACH służy do latania po tablicach niezaleznie czy one są numerowane pokolei czy nie.

W czym jest lepsze FOREACH od while? Ano przy foreach nie miałbyś tak głupiego błędu.
I poraz kolejny ci piszę: do latania po tablicach używa się właśnie FOREACH - po to zostało stworzone.

Owszem, jak ktoś ma widzimisie to może używać while... tylko by to używać to trzeba umieć i rozumieć co się robi.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #13





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


jak zaczynałem naukę półtorej roku temu php w ebookach ani na videokursach nigdzie nie pisało, że while używa się tylko jak ma się widzimisie wink.gif ale człowiek uczy się całe życie, będę używał zatem częściej foreach, choć czasami mimo wszystko lepiej mi użyć while.
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie napisałem że while się uzywa gdy ma się widzimisie, tylko że while się używa do tablic gdy ma się widzimisie - lekka różnica.

WHILE jest bardzo potrzebną konstrukcją, tylko trzeba rozumieć do czego.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #15





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


mógłbyś rzucić jakiś przykład, żebym wiedział na przyszłość kiedy while, kiedy foreach?
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Już ci pisałem....

FOREACH - gdy iterujesz po tablicy - tu naprawdę nie ma żadnej filozofii...

WHILE - gdy masz mieć pętle która będzie sie wykonywać do czasu spełnienia warunku... W szczegolnosci można tu iterować właśnie po tablicy, ale to sztuka dla sztuki, tzw. widzimisie tongue.gif
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
adamantd
post
Post #17





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

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


wszystko jasne -dzięki

ja jestem jeszcze chyba na etapie udowadniania sobie, że potrafię zamiast na etapie upraszczania sobie życia smile.gif

Ten post edytował adamantd 15.04.2013, 14:17:48
Go to the top of the page
+Quote Post
matiit
post
Post #18





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Kiedy czekasz na zdarzenie, które nie jest z tablicy - np. aż wartość jakiejś zmiennej będzie większa od 10:

  1. $x = pobierz_zmienna_x_z_innego_serwera();
  2. while ($x <=10)
  3. {
  4. //czekamy i znowu pobieramy zmiennną
  5. sleep(1000);
  6. $x = pobierz_zmienna_x_z_innego_serwera();
  7. }
  8. // x jest > 10, mozemy cos robic


$x może symbolizować stan drugiego serwera, jeśli jest większe od 10 - serwer np. jest otwarty i dopiero teraz możemy sie z nim połączyć.

Poza tym wyobraź sobie sytuację, że chcemy sprawdzać czy jakaś strona się zmieniła:
  1. $alarm = new Alarm('loud');
  2. $page_html = file_get_contents('http://stackoverflow.com/questions/ask');
  3. sleep(2000);
  4.  
  5. $new_page_html = file_get_contents('http://stackoverflow.com/questions/ask');
  6.  
  7. while($new_page_html == $page_html)
  8. {
  9. //strona się nie zmieniła, czekamy i pobieramy jeszcze raz
  10. sleep(2000);
  11. $new_page_html = file_get_contents('http://stackoverflow.com/questions/ask');
  12. }
  13.  
  14. // strona się zmieniła, możemy na przykład włączyć alarm.
  15. $alarm->turnOn('short');


Ten post edytował matiit 15.04.2013, 14:23:43
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 Aktualny czas: 20.08.2025 - 21:54