uczeń php
27.10.2010, 15:18:23
Oto jeden kawałek kodu
for($num_i = 0; $num_i < count($tabss); $num_i++) { for($indeksy = 0; $indeksy < count($tabss[$num_i]); $indeksy++) { echo $tabss[$num_i][$indeksy].'<br />'; } }
Oto drugi kawałek kodu
foreach($tabss as $ser)
foreach($ser as $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.
flashdev
27.10.2010, 15:24:26
Może ten przykład Ci trochę rozjaśni:
<?php
$tab = array(1, 2, 3, 'abc' => 4, 'def' => 5
);
for( $i = 0; $i < count($tab); $i++ ){ }
foreach( $tab as $value){
}
CuteOne
27.10.2010, 15:26:24
Szybszy ;p
uczeń php
27.10.2010, 16: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 ?
flashdev
27.10.2010, 16:27:50
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 ?
<?php
$tab = array(1, 2, 3, 'abc' => 4, 'def' => 5
);
for( $i = 0; $i < count($tab); $i++ ){ echo '$tab['. $i .'] = '. $tab[$i] ."\n"; }
foreach( $tab as $key => $value){
echo '$tab['. $key .'] = '. $value ."\n"; // $tab[$key] == $value }
Może teraz lepiej widać o co chodzi.
uczeń php
28.10.2010, 09:54:34
Jak nastąpił zapis do tablicy to sam nie wiem -> napisałem coś takiego
foreach($tabss as $ind_ser=>$ser)
foreach($ser as $ind_str=>$str)
// var_dump($str);
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
nospor
28.10.2010, 09:59:03
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
uczeń php
28.10.2010, 10:05:06
TO JA WIEM TYLKO DLACZEGO OTRZYMALEM TAKIE WYNIKI , ŻE 0 1 A POTEM JEST 0 36 ZAMIAST 0 2.
nospor
28.10.2010, 10:10:23
jejkuś... bo masz takie INDEKSY!!
Zrob sobie
print_r($tabss);
a zobaczysz co tam naprawde siedzi
uczeń php
28.10.2010, 19:04:30
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 ) )
nospor
28.10.2010, 19:12:06
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?
uczeń php
28.10.2010, 19:15:09
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.
CuteOne
28.10.2010, 19:15:45
$i=$k=0;
foreach($tabss as $ind_ser=>$ser) {
foreach($ser as $ind_str=>$str) {
echo '<br />'.$ind_ser.' '.$ind_str.'<br />'; // INDEX.' '.INDEX echo $i.' '.$k; // ILOSC_WIERSZY.' '.ILOSC_WIERSZY $i++;
}
$k++;
}
uczeń php
28.10.2010, 20:26:03
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);
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.