Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Czy to nie to samo ? foreach - for ?, porównanie kawałków dwóch zapisów for i foreach
uczeń php
post
Post #1





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

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


Oto jeden kawałek kodu
  1. for($num_i = 0; $num_i < count($tabss); $num_i++) {
  2. for($indeksy = 0; $indeksy < count($tabss[$num_i]); $indeksy++) {
  3. echo $tabss[$num_i][$indeksy].'<br />'; }
  4. }

Oto drugi kawałek kodu
  1. foreach($tabss as $ser)
  2. foreach($ser as $str)
  3. echo $str;

i z punktu logicznego mogłoby się wydawać, że to jest jedno i to samo a jednak nie gdyż za pierwszym razem wyświetla mi dwie pierwsze wartości z tablicy pierwszej i pierwszą wartość z tablicy drugiej. Natomiast drugi kawałek kodu wyświetla mi wszystkie wartości w obu tablicach. Czy ktoś mógłby wytłumaczyć, dlaczego? A po za tym zależy mi na udoskonaleniu tego pierwszego zapisu, żeby i również w nim były wyświetlane wszystkie wartości z tablicy dwuwymiarowej.
Go to the top of the page
+Quote Post
flashdev
post
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

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


Może ten przykład Ci trochę rozjaśni:

  1. <?php
  2.  
  3. $tab = array(1, 2, 3, 'abc' => 4, 'def' => 5);
  4.  
  5. for( $i = 0; $i < count($tab); $i++ ){
  6. var_dump($tab[$i]);
  7. }
  8.  
  9. echo "\n";
  10.  
  11. foreach( $tab as $value){
  12. var_dump($value);
  13. }
  14.  
  15. fgets(STDIN);


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





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Szybszy ;p

Ten post edytował CuteOne 27.10.2010, 15:27:25
Go to the top of the page
+Quote Post
uczeń php
post
Post #4





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

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


W nie których miejscach gdzie są powinne być wartości jest null - pierwszy kawałek kodu a drugim są normalne wartosci dlaczego ?
Go to the top of the page
+Quote Post
flashdev
post
Post #5





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

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


Cytat(uczeń php @ 27.10.2010, 17:23:15 ) *
W nie których miejscach gdzie są powinne być wartości jest null - pierwszy kawałek kodu a drugim są normalne wartosci dlaczego ?


  1. <?php
  2.  
  3. $tab = array(1, 2, 3, 'abc' => 4, 'def' => 5);
  4.  
  5. var_dump($tab);
  6. echo "\n";
  7.  
  8. for( $i = 0; $i < count($tab); $i++ ){
  9. echo '$tab['. $i .'] = '. $tab[$i] ."\n";
  10. }
  11.  
  12. echo "\n";
  13.  
  14. foreach( $tab as $key => $value){
  15. echo '$tab['. $key .'] = '. $value ."\n"; // $tab[$key] == $value
  16. }
  17.  
  18. fgets(STDIN);


Może teraz lepiej widać o co chodzi.


--------------------
Go to the top of the page
+Quote Post
uczeń php
post
Post #6





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

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


Jak nastąpił zapis do tablicy to sam nie wiem -> napisałem coś takiego
  1. foreach($tabss as $ind_ser=>$ser)
  2. foreach($ser as $ind_str=>$str)
  3. // var_dump($str);
  4. echo '<br />'.$ind_ser.' '.$ind_str.'<br />';

a oto wyniki:
0 0

0 1

0 36

0 54

0 72

0 90

0 108

0 126

1 0

1 144

1 176

1 248 a dlaczego nie otrzymałem wyników
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
1 0
1 1
1 2
1 3
i wtedy mógłyb skorzystać z dwóch pętli for
1 2
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




Przecież FORem lecisz od 0 do liczby elementów w tablicy. Zeby to zadzialalo to indeksy muszą byc od 0 do liczby elementow o jeden wiekszy, a przeciez widac po FOREACH ze masz tam indeksu nienumerowane po kolei


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

"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
uczeń php
post
Post #8





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

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


TO JA WIEM TYLKO DLACZEGO OTRZYMALEM TAKIE WYNIKI , ŻE 0 1 A POTEM JEST 0 36 ZAMIAST 0 2.
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




jejkuś... bo masz takie INDEKSY!!

Zrob sobie
print_r($tabss);
a zobaczysz co tam naprawde siedzi
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
uczeń php
post
Post #10





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

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


zrobiłem print_r($tabss); a oto wyniki:

Array ( [0] => Array ( [0] => www.google.pl [1] => www.google.com [36] => www.yahoo.com [54] => www.ask.com [72] => www.onet.pl [90] => www.interia.pl [108] => www.google.interia.pl [126] => www.wp.pl ) [1] => Array ( [0] => www.centrumcyfraplus.pl [144] => www.strona.pl [176] => www.arkamed.com.pl [248] => www.tooba.pl ) )
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




No jest tak jak mowilem. Masz takie indeksy wiec masz takie wyniki. Czego więc od nasz oczekujesz? Już ci przecież wyjasnilem w poprzednich postach czemu Twoj skrypt dziala jak dziala. Czego nadal nie rozumiesz?


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

"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
uczeń php
post
Post #12





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

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


Nie wiem czy to profesjonalne podejście ale w swoim projekcie muszę wywołać n razy funckję w postaci for($i) i for($j) { function funkcja($i, $j) } a petle foreach sumują te dwie literacje co nie za bardzo mi odpowiada. Dlatego tablicę dwuwymiarową wolałbym wywołać w postaci for i for.
Go to the top of the page
+Quote Post
CuteOne
post
Post #13





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $i=$k=0;
  2. foreach($tabss as $ind_ser=>$ser) {
  3. foreach($ser as $ind_str=>$str) {
  4. echo '<br />'.$ind_ser.' '.$ind_str.'<br />'; // INDEX.' '.INDEX
  5. echo $i.' '.$k; // ILOSC_WIERSZY.' '.ILOSC_WIERSZY
  6. $i++;
  7. }
  8. $k++;
  9. }


Ten post edytował CuteOne 28.10.2010, 19:15:57
Go to the top of the page
+Quote Post
uczeń php
post
Post #14





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

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


Czy w jakiś sposób można ściśle kontrolować indeksy?
fragment kodu zapisujący wartości do tablicy

$tabss = array(array());
$tabss = pola_select($pokaz_historie, $name_select_0, $name_select_1, $name_przycisk_pokaz_daty);
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: 21.08.2025 - 09:24