Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dwie petle for
Wolfie
post 3.08.2009, 22:44:40
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Witam,


Chyba dopada mnie jakis analfabetyzm wtorny.....


Napisalem cos co mialo mi wytlumaczyc dzialanie petli for i napisalem z palca ale nie wiem dlaczego jest blad :

  1. <?php
  2.  
  3.    $tab1 = array("pawel", "marcin", "michal", "zenek");
  4.    $tab2 = array("zyzia", "dyzia", "fryzia", "cizia");
  5.    
  6.    $n = 3;
  7.    $m = 4;
  8.    
  9.    for($e=0; $e<$n; e++) {
  10.        for($h=0; $h<$m; h++) {
  11.            echo $tab1;
  12.        
  13.        echo $tab2;
  14.        }
  15.    }
  16. ?>



Błąd parsera w linii 9.......A poza tym nie wiem czy to wogole ma jakikolwiek sens taki przyklad ...?
Go to the top of the page
+Quote Post
zeten
post 3.08.2009, 22:47:10
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 2
Dołączył: 1.08.2009
Skąd: Katowice, Rybnik

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


  1. <?php
  2. for($e=0; $e<$n; e++) {
  3.       for($h=0; $h<$m; h++) {
  4. ?>


popraw na:

  1. <?php
  2. for($e=0; $e<$n; $e++) {
  3.       for($h=0; $h<$m; $h++) {
  4. ?>


Literówka winksmiley.jpg Nie wiem czy taki przykład ma sens ;-)

P.S.
W ogóle co ten skrypt ma robić? biggrin.gif Bo do mnie ten kod jest MEGA zagmatwany ;-)

Ten post edytował zeten 3.08.2009, 22:53:29
Go to the top of the page
+Quote Post
Andaramuxo
post 3.08.2009, 22:52:47
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 18.03.2009

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


Jeżeli chcesz zobaczyć jak działa pętla for do wykonaj taki skrypt:
  1. <?php
  2. for ($a=0; $a<=500; $a++) {
  3. echo " $a <br>";
  4. }
  5. ?>


Ten post edytował Andaramuxo 3.08.2009, 22:54:40


--------------------
Go to the top of the page
+Quote Post
JoShiMa
post 3.08.2009, 22:57:37
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Poza tym echo nie wyświetli zawartości tablicy smile.gif


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 3.08.2009, 23:40:19
Post #5





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Jak dziala petla for wiem, ale nie wiem jak dziala podwojna petla for smile.gif

Co do wyswietlania echo to wyswietli, troche zmodyfikowalem przyklad :

  1. <?php
  2.  
  3.    $tab = array(array("pawel", "marcin", "michal", "zenek"),array("zyzia", "dyzia", "fryzia", "cizia"),array(1,2,3,4,5,));
  4.    
  5.    $n = 2;
  6.    $m = 1;
  7.    
  8.    for($e=0; $e<$n; $e++) {
  9.      for($h=0; $h<$m; $h++) {
  10.            
  11.        echo $tab[$e][$h];
  12.        }
  13.    }
  14. ?>


Tylko teraz mam jedna tablice , a chcialem zobaczyc jak np mozna dodawac wartosci tablic do siebie wykorzystujac 2 petle for, tak aby z 2 tablic jednowymiarowych otrzymac jedna dwuwumiarowa......
Go to the top of the page
+Quote Post
Fifi209
post 4.08.2009, 00:02:58
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


  1. <?php
  2. $tablica1 = array('a', 'b', 'c');
  3. $tablica2 = array('d', 'e', 'f');
  4. $nowa = array();
  5.  
  6. for ($i=0; $i < count($tablica1); $i++) {
  7. $nowa[] = array($tablica1[$i], $tablica2[$i]);
  8. }
  9.  
  10. echo '<pre>';
  11. print_r($nowa);
  12. echo '</pre>';
  13. ?>


O coś takiego chodzi?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 09:34:41
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Może raczej:

  1. <?php
  2. for ($i=0; $i < count($tablica1); $i++) {
  3.   for ($j=0; $j < count($tablica2); $j++) {
  4.        $nowa[] = array($tablica1[$i], $tablica2[$j]);
  5.   }
  6. }
  7. ?>


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 4.08.2009, 09:44:08
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(JoShiMa @ 4.08.2009, 09:34:41 ) *
Może raczej:

  1. <?php
  2. for ($i=0; $i < count($tablica1); $i++) {
  3.   for ($j=0; $j < count($tablica2); $j++) {
  4.        $nowa[] = array($tablica1[$i], $tablica2[$j]);
  5.   }
  6. }
  7. ?>


W ten sposób połączysz "każdy z każdym" winksmiley.jpg


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 10:48:59
Post #9





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Owszem, ale autor nie powiedział jak chce połączyć smile.gif A tak to przynajmniej wykorzystam wszystkie elementy każdej tablicy smile.gif Twój sposób wywali błąd, Jeśli druga tablica będzie miała mniej elementów niż pierwsza.


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 4.08.2009, 10:52:20
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(JoShiMa @ 4.08.2009, 10:48:59 ) *
Owszem, ale autor nie powiedział jak chce połączyć smile.gif A tak to przynajmniej wykorzystam wszystkie elementy każdej tablicy smile.gif Twój sposób wywali błąd, Jeśli druga tablica będzie miała mniej elementów niż pierwsza.


Bo z założenia obie są równe sobie długością.

ew. można dodać:

  1. <?php
  2. if (count($tablica1) == count($tablica2)) {
  3. // tutaj pętla
  4. }else{
  5. // błąd
  6. }
  7. ?>


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 10:56:29
Post #11





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Niech autor wątku sam zdecyduje o co mu chodziło. Przecież nie będziemy się domyślać a w takiej sytuacji spór jest bezcelowy smile.gif

Dodam tylko, że Twoją ostatnią podpowiedź można napisać zgrabniej

  1. <?php
  2. $limit = min(count($tablica1),count($tablica2));
  3.   for ($i=0; $i < $limit; $i++) {
  4.      $nowa[] = array($tablica1[$i], $tablica2[$i]);
  5. }
  6. ?>


wtedy błąd nie wystąpi smile.gif

Ten post edytował JoShiMa 4.08.2009, 10:56:48


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 4.08.2009, 21:02:42
Post #12





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Coz, głównie chodzi mi o zapoznanie sie z mozliwosciami tablic i jak sa zbudowane , przy okazji budowa petli for smile.gif przy dwuwymiarowych tablicach.

Interesuje mnie glownie jak stworzyc tablice dwuwymiarowa tak zebym mogl np wyswietlic tez dowolny elemetn z dowolnego rzedu i dowolnej kolumny. Taka macierz bede chcial pozniej wykorzystac ale najpierw chce zrozumiec dobrze jej dzialanie i dostawanie sie do elementow smile.gif, i czy wogole to ma sens, moze lepiej skorzystac poprostu z bazy danych ? winksmiley.jpg

No a przeciez bez podwojnej petli for nie bede mogl sobie wybrac dowolnego elemetnu tablicy.

Co do dodawania do siebie tablic to chce wiedziec jakie sa mozliwosci, w jaki sposob mozna je do siebie dodawac....majac tablice jednowymiarowa wiadomo ze mamy tylko jeden rzad i wiele kolumn, w przypadku dwuwymiarowej wiele rzedow o wiele kolumn, czy tak ?

A na koncu najlepiej jakby udalo mi sie zrobic to tak zeby wszyskto wyswietlalo sie pozniej tak, jak wygladalaby ta tablica, bo jak ostatnio wyswietlalem to wszystko bylo w jednym rzedzie na monitorze ale to juz rozumiem rola html.....?

Ten post edytował Wolfie 4.08.2009, 21:06:09
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 21:04:52
Post #13





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Podwójna pętla służy do przeczesania dwuwymiarowej tablicy i przeszukania jej wszystkich elementów. Żeby pobrać jeden, wybrany element, wystarczy podać jego "współrzędne". smile.gif

Ten post edytował JoShiMa 4.08.2009, 21:10:25


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 4.08.2009, 21:09:11
Post #14





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


A czy w przypadku dodawania do siebie np dwoch tablic dwuwymiarowych obowiazuja takie same zasady ja przy dzialaniach na miacierzach ?
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 21:11:29
Post #15





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Co do ilości i rzędów. PHP jest pod tym względem bardzo liberalne. Oczywiście można stworzyć i używać tablicę zbudowaną jak macierz (wiele rzędów i w każdym rzędzie tyle samo kolumn). Jednak im szybciej przestaniesz w ten sposób postrzegać tablice Tym lepiej dla Ciebie, bo taka budowa tablicy nie jest obowiązkowa. Lepiej myśl o tym jak o zagnieżdżeniu tablic. Na przykład pierwszy element tablicy jest tablicą n-elementową, drugi element może być tablicą m-elementową, trzeci element tablicy może być liczbą a czwarty obiektem. Nie myśl o tablicy jak o macierzy ale jak o pewnej strukturze.

Wspomniałeś coś o bazach danych. Nawet jak się zdecydujesz (wszystko zależy czego oczekujesz) to bez zrozumienia i czucia tablic będzie Ci ciężko smile.gif

W PHP nie istnieją żadne zasady jeśli chodzi o tablice. Ty decydujesz o ich strukturze smile.gif Nawet indeksy nie muszą być kolejnymi liczbami całkowitymi (tablice asocjacyjne).


--------------------
Go to the top of the page
+Quote Post
Wolfie
post 4.08.2009, 21:14:35
Post #16





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

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


Czyli w tablicach asocjacyjnych moge rownoez przechowywac obietky i nadawacc kluczom do obiektow dowolna nazwe ?

No i czym lepiej przegladac tablice ? for czy foreach ?

Ten post edytował Wolfie 4.08.2009, 21:15:13
Go to the top of the page
+Quote Post
JoShiMa
post 4.08.2009, 21:20:38
Post #17





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Możesz przechowywać wszystko dosłownie. A co do kluczy to jedyne ograniczenie formalne jest takie, że można używać tylko liter i podkreślników ale bez polskich znaków i spacji. Dokładnie tak jak z nazwami zmiennych.

Co do for i foreach, to wszystko zależy co chcesz osiągnąć i jaką masz tablicę. Jeśli indeksy nie są kolejnymi liczbami całkowitymi to for odpada smile.gif


--------------------
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: 15.05.2025 - 07:47