Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z prostą tablicą
elglt
post 19.10.2012, 02:36:45
Post #1





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

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


witam,

  1. $zmienna = 1;
  2. function funkcja()
  3. {
  4. for($i=0; $i<10; $i++)
  5. {
  6. $zmienna= $zmienna+1;
  7. }
  8. }
  9. funkcja();
  10. echo $zmienna;


dlaczego echo wyswietli 1 a nie 11?
i jak moglbym sobie zrobic wyraz z x-gwiazdeczkami poniewaz ponizszy kod tez nie daje efektu:


  1. function funkcja()
  2.  
  3. {
  4. for($i=0; $i<10; $i++)
  5. {
  6. $gwiazdeczki[i] += '*';
  7. }
  8. }
  9. funkcja();
  10.  
  11. echo $gwiazdeczki;
Powód edycji: [Ociu]: bbCode
Go to the top of the page
+Quote Post
Ociu
post 19.10.2012, 05:00:59
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




http://php.pl/Wortal/Artykuly/PHP/Podstawy...asieg-zmiennych
Go to the top of the page
+Quote Post
frantic09
post 19.10.2012, 08:25:40
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 6
Dołączył: 7.03.2011
Skąd: Kraków

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


Do pierwszego, tak jak pisze Ociu, dodam, że musisz użyć słowa global, żeby przechwycić zmienna globalną w swojej funkcji.

Co do drugiego:
  1. function funkcja()
  2. {
  3. for($i=0; $i<10; $i++)
  4. {
  5. $gwiazdeczki[i] += '*'; //skąd ta zmienna się bierze? masz pojęcie, że tworzysz (niepoprawnie z resztą) tablicę?
  6. }
  7. }
  8. funkcja();
  9. echo $gwiazdeczki;


I jeśli masz tworzyć wyraz z X gwiazdek, to może przekaż tą liczbę do funkcji jako parametr?

  1. function funkcja($x){
  2. //tworzysz pustą zmienną
  3. $tekst = '';
  4.  
  5. //prosty for z X iteracjami
  6. for($i=0; $i<$x; $i++) {
  7. //operatorem konkatenacji tekstów jest KROPA "." a NIE PLUS! Plusa używasz np w Java, Javascript
  8. $tekst .= '*';
  9. }
  10. //funkcja zwróci utworzony tekst
  11. return $tekst;
  12. }
  13.  
  14. echo funkcja(10);


--------------------
  1. echo "Wydaje mi się, że mogłoby to zadziałać... ;)";
Go to the top of the page
+Quote Post
thek
post 19.10.2012, 16:07:47
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




frantic09... globale to zuo. Od tego są parametry i return by z tego korzystać przy używaniu funkcji, a nie lecieć globalami i innymi cudami, które powodują tylko problemy przy przegladaniu kodu, bo zmienna z niewiadomego powodu potem zmienia wartośc i nikt nie wie jak oraz czemu.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
wpaski
post 19.10.2012, 16:21:51
Post #5





Grupa: Zarejestrowani
Postów: 206
Pomógł: 6
Dołączył: 25.12.2011

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


A więc zamiast global tak:
  1. <?php
  2.  
  3. function funkcja($zmienna)
  4. {
  5.  
  6. for($i=0; $i<10; $i++)
  7. {
  8. $zmienna++;
  9. }
  10. return $zmienna;
  11. }
  12. echo funkcja(1);
  13.  
  14.  
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: 12.05.2024 - 02:12