Autor | Zpráva | ||
---|---|---|---|
kokolino Profil * |
#1 · Zasláno: 23. 2. 2011, 12:25:20
Čawte riešim nasledovný problém ,ale neviem si sním dať rady
so súboru mám načítat do tabuľky nasledujúc veci 000 a0 010 a1 010 b0 011 b1 020 c0 021 c1 100 A0 101 A1 110 B0 111 B1 120 C0 121 C1 ..... pokračuje to ďalej ,ale pre pochopenie stači toľko pričom tie čisla prve dve čísla definujú ako keby samostatnú tabuľku na danej pozicií, a tretie čislo určuje, že tá tabuľka má 2 riadky horný je 0 a spodný je 1. x | y| z 0 |0 | 0 0 |0 | 1 konečná podoba by mala vzyerať takto Odkaz ja som zobrazenie tabuľky spravil nasledovne <?php $m=2; $n=2; echo"<table border='1'>"; echo"<tr><td>y/x</td>"; for ($j=0;$j<=$n; $j++){ echo"<td>$j</td>";} echo"<tr>"; for ($i=0;$i<=$m;$i++){ echo"<tr><td>$i</td>"; for($j=0;$j<=$n;$j++){ echo"<td><table><tr><td>0</td></tr><tr><td>1</td></tr></table></td>"; } echo"<tr>"; } echo"</table>"; ?> o práci so súbormi som si uz prečital niečo na Odkaz podla toho som si aj skusil vypísať obsah súboru ,čo mi ide <?php $lines = file("janko.txt"); foreach($lines as $line) { echo($line)."<br>"; } ?> neviem však zo súbora tie veci načitat na správne miesto vedel by mi s tým niekto poradiť ? |
||
Tori Profil |
#2 · Zasláno: 23. 2. 2011, 12:48:44 · Upravil/a: Tori
Šlo by to např. takto:
$file = file("janko.txt", FILE_SKIP_EMPTY_LINES); $table = array(); $cols = $rows = 0; for ($i=0; $i<count($file); $i++) { // --- tyto řádky si změnte, aby načetly souřadnice a obsah buňky z čárkou oddělených hodnot $row = $file[$i][0]; $col = $file[$i][1]; $line = $file[$i][2]; $table[$row][$col][$line]=trim(substr($file[$i],3)); // -------- $cols = max($cols,$col); // pocet sloupcu tabulky $rows = max($rows,$row); // pocet radku tabulky } var_dump($table); // $m=2; // $n=2; echo "<table border='1'>"; echo "<tr><td>y/x</td>"; for ($j=0;$j<$cols; $j++){ echo "<td>$j</td>"; } echo "<tr>"; for ($i=0;$i<$rows;$i++){ echo "<tr><td>$i</td>"; for($j=0;$j<$cols;$j++){ echo "<td><table><tr><td>{$table[$i][$j][0]}</td></tr><tr><td>{$table[$i][$j][1]}</td></tr></table></td>"; } echo "<tr>"; } echo "</table>"; |
||
petr 6 Profil |
#3 · Zasláno: 23. 2. 2011, 12:53:06
kokolino:
„pričom tie čisla prve dve čísla definujú ako keby samostatnú tabuľku na danej pozicií, a tretie čislo určuje, že tá tabuľka má 2 riadky horný je 0 a spodný je 1.“ Možná by bylo dobré popsat to srozumitelněji. Jaká tři čísla? Na každém řádku máš jedno číslo (ze tří číslic) a jeden řetězec z alfanumerických znaků. Asi trochu chápu, co chceš, ale nevím, kde přesně máš problém. Jestli s přiřazením příslušných hodnot daným polím tabulky, nebo s výpisem do tabulky, aby vypadala jako na tom obrázku. |
||
kokolino Profil * |
#4 · Zasláno: 23. 2. 2011, 13:25:31
petr 6,
pod tými tromi číslami som myslel 000 dá sa to prepísať aj na tvar => 0,0,0 a0 neviem , či je to už teraz viac zrozumiteľné a áno mám problém priradiť jednotlivé hodnoty jednotlivým bunkám tabuľky, čo ste mysleli pod ? "Pak stejné zpracování, jako jste použil." keď som spojil Váš kus kódu s mojou tabuľou tak výsledok bol array(1) { [""]=> array(1) { [""]=> array(1) { [""]=> string(0) "" } } } + obyčajné zobrazenie mojej tabulky, asi už nepouživam hlavu ,lebo sa s tým trápim 4 hodiny v kuse |
||
kokolino Profil * |
#5 · Zasláno: 23. 2. 2011, 13:29:33
Tori:
moja tabuľa bude mať v konečnej podobe 8 stĺpcov x 16 riadkov to je 128 buniek |
||
Tori Profil |
#6 · Zasláno: 23. 2. 2011, 13:39:59 · Upravil/a: Tori
kokolino:
Jak potom budou vypadat údaje v tom texťáku pro řádky s číslem 11 a víc? Aha, s čárkou jako oddělovačem (0,0,0,a0 ve [#4]) je to už lepší. Potom tedy parsovat jednotlivé řádky buď pomocí explode(',', $line) anebo substr+strpos - nevím z hlavy, co je v tomto případě rychlejší. „čo ste mysleli pod ? "Pak stejné zpracování, jako jste použil." “ Doplním do [#2]. edit: Tohle ↓ je lepší řešení než moje (jen místo foreach bych i jednotlivé řádky souboru procházela cyklem for - měl by být trochu rychlejší). |
||
petr 6 Profil |
#7 · Zasláno: 23. 2. 2011, 13:40:16 · Upravil/a: petr 6
Hodnoty buňkám přiřadíte například takto
$pole=array(); foreach($lines as $line) { list($prvni,$druhy)=explode(" ",$line); $pole[$prvni]=$druhy; } A do tabulky je vypíšete takto for($a=0;$a<$pocet_radku;$a++){ for($b=0;$b<$pocet_sloupcu;$b++){ for($c=0;$c<1;$c++){ echo $pole[$a.$b.$c]; } } }// každý z cyklů for "obalíte" příslušnými tabulkovými HTML značkami Edit: Omylem jsem zaměnil řádky a sloupce |
||
kokolino Profil * |
#8 · Zasláno: 23. 2. 2011, 14:07:57
Tori:
to čo ste mi napisal/ a v odkaze #2 sa mi zobrazuje takto Odkaz |
||
kokolino Profil * |
#9 · Zasláno: 23. 2. 2011, 14:10:59
Tori:
celkovo mne je jedno ako rýchle sa to spracuje , teraz idem na autobus a cestujem domov, doma si vyškúšam to čo mi poradil petr 6 a dám Vám obom vedieť či sa mi to podarilo spraviť ,alebo bude potreba ďalšej pomoci zatial Vám obom veľmi pekne ďakujem |
||
Tori Profil |
#10 · Zasláno: 23. 2. 2011, 14:12:51
kokolino:
Omlouvám se, překlepy jsem opravila. |
||
kokolino Profil * |
#11 · Zasláno: 23. 2. 2011, 20:08:13
Tori:
takže som doma a práve som si odskúšal ešte raz Vás kód, robí presne to čo má takže som nesmierne vďačný za pomoc ale mám ešte pár otazok na Vás , aby som ten Vás kod aj správne pochopil 1. čo robí count($file) ? vracia to veľkost poľa správne som to pochopil ? 2. čo znamená FILE_SKIP_EMPTY_LINES ? nedá sa na to kliknúť , že by som si to pozrel v manuále 3. vo výpise nad tabuľkou sa zobrazuje array(4) { [0]=> array(3) { [0]=> array(2) { [0]=> string(2) "a0" [1]=> string(2) "a1" } [1]=> array(2) { [0]=> string(2) "b0" [1]=> string(2) "b1" } [2]=> array(2) { [0]=> string(2) "c0" [1]=> string(2) "c1" } } [1]=> array(3) { [0]=> array(2) { [0]=> string(2) "A0" [1]=> string(2) "A1" } [1]=> array(2) { [0]=> string(2) "B0" [1]=> string(2) "B1" } [2]=> array(2) { [0]=> string(2) "C0" [1]=> string(2) "C1" } } [2]=> array(3) { [0]=> array(2) { [0]=> string(3) "aA0" [1]=> string(3) "aA1" } [1]=> array(2) { [0]=> string(3) "bB0" [1]=> string(3) "bB1" } [2]=> array(2) { [0]=> string(3) "cC0" [1]=> string(3) "CC1" } } [" "]=> array(1) { [" "]=> array(1) { [""]=> string(0) "" } } } netušíte čím to je ? |
||
Tori Profil |
#12 · Zasláno: 23. 2. 2011, 21:03:01 · Upravil/a: Tori
kokolino:
Ad 1: Ano. Ad 2: Funkce file vrací obsah souboru, rozsekaný po jednotlivých řádcích do pole. 2.param. zajišťuje, aby se vynechaly prázdné řádky. Ad 3: var_dump() na ř.14. Původně jsem ho tam dala jen abyste viděl, jakou strukturu pole $table vám to vytvoří. Ale mezi řešením petra 6 a mým jsou zásadní rozdíly: moje: + Nepotřebujete znát počet řádků ani sloupců výsledné tabulky, zjistí se automaticky. - Jde to použít na max. 10 řádků/sloupců, protože souřadnice buňky se zjišťuje jako první / druhý / třetí znak (vždy jen jeden!) petr 6: + Žádné omezení počtu řádků/sloupců ani formátu, ve kterém jsou souřadnice zadané - Musíte předem znát, kolik řádků/sloupců/řádků vnořené tabulky se má vytvořit. PS: Vykám každému, koho neznám osobně, ale nevyžaduji to, a už vůbec ne s velkým písmenem. :-) |
||
petr 6 Profil |
#13 · Zasláno: 23. 2. 2011, 21:03:04
kokolino:
„netušíte čím to je ?“ var_dump() A FILE_SKIP_EMPTY_LINES se dá v manuálu najít taky. |
||
kokolino Profil * |
#14 · Zasláno: 23. 2. 2011, 22:10:56
Tori:
ja som si zvykol, že ak mi niekto vyká tak mu vykám tiež petr 6: ten var_dump() nabudúce si to dohladám cez google ešte raz Vám obom ďakujem za pomoc, ak by to niekto potreboval do budúcna riešenie je v 2 príspevku od Tori téma sa môže uzavrieť |
||
Časová prodleva: 13 let
|
0