Diskuze: txt soubor na asociativní pole
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
pokud chápu správně, pak z toho souboru získáš třeba takový string
$s = "
mistnost:1
teplota:22.5
okno1:zavreno
mistnost:2
teplota:23
okno1:zavreno
mistnost:3
teplota:18
okno1:otevreno
";
Pokud jo, tak by mohlo fungovat něco takovýho (i když je to shit):
$lines = explode("\n", $s);
foreach ($lines as $row) {
$row = trim($row);
if (empty($row)) {
continue;
}
$values = explode(":", $row);
$key = $values[0];
$value = $values[1];
if ($key === "mistnost") {
$varName = "hodnotmistnost{$value}j";
$$varName = array();
} else {
$x = &$$varName;
$x[$key] = $value;
}
}
echo "<pre>";
var_dump($hodnotmistnost1j, $hodnotmistnost2j, $hodnotmistnost3j);
Každá místnost má vlastní soubor(a dokonce i složku), ta položka room
tam teoreticky ani bejt nemusí, ani nevim proč sem jí tam dal. Každopádně
zatim dík, kouknu se na to pak, teď mam co dělat abych stihnul sraz
Jestli máš data ve více souborech můžeš je procházet nějak takhle: http://stackoverflow.com/…2257/2215742
Podle mne by bylo lepší použít něco jako:
$filename = "data.txt";
$handler = fopen($filename, 'r');
while(!feof($handler) {
list($key, $value) = explode(':', fgets($handler));
$allData[$room][$key] = $value;
}
fclose($handler);
Vytvářet jména proměných dynamicky mi přide jako blbost (a prasárna). Proto bych si udělal něco jako obalující pole ($allData).
Dokumentace:
fgets - načte řádek ze souboru - http://php.net/…on.fgets.php
feof - testuje konec souboru
explde - http://cz2.php.net/….explode.php
list - http://cz2.php.net/…ion.list.php
Zobrazeno 4 zpráv z 4.