Autor Zpráva
kokolino
Profil *
Č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
Š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);
Pak stejné zpracování, jako jste použil, tj.:
// $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
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 *
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 *
Tori:
moja tabuľa bude mať v konečnej podobe 8 stĺpcov x 16 riadkov to je 128 buniek
Tori
Profil
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
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 *
Tori:
to čo ste mi napisal/ a v odkaze #2 sa mi zobrazuje takto Odkaz
kokolino
Profil *
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
kokolino:
Omlouvám se, překlepy jsem opravila.
kokolino
Profil *
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
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
kokolino:
netušíte čím to je ?
var_dump()
je klikací.

A FILE_SKIP_EMPTY_LINES se dá v manuálu najít taky.
kokolino
Profil *
Tori:
ja som si zvykol, že ak mi niekto vyká tak mu vykám tiež

petr 6:
ten
var_dump()
na to som zabudol kliknúť a som zvyknutý na to, že stači kliknúť tu na fóre a ono ma to odkáže na manuál
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ť

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0