Zdravím, chtěl bych poprosit o pomoc zkušenější programátory. Mám nějaký string, kde je datum a nějaká hodnota. String má dakovouhle strukturu. DD.MM.YYYY|XX.XXX DD.MM.YYYY|XX.XXX DD.MM.YYYY.....
Chtěl bych pracovat nějak s hodnotami toho stringu v rámci měsíců. Asi nejlepší by bylo udělat si 12 polí podle měsíce a do pole leden přiřadit příslušné hodnoty. Hodnot je asi 300 a opravdu nevím, jak se k tomu dopracovat. Nejdál jsem se dostal k explode ('|', $string); ale dál nevidím východisko.
Jak dál pracovat se stringem v PHP
-
- Level 3
- Příspěvky: 644
- Registrován: prosinec 12
- Pohlaví:
-
- Level 1
- Příspěvky: 63
- Registrován: červenec 21
- Pohlaví:
Re: Jak dál pracovat se stringem v PHP
Oddělovač "řádků" je spíš mezera, ne? Svislá čára vypadá jako oddělovač sloupců - tedy že XX.XXX se váže k datumu DD.MM.YYYY, které je před tím a oddelený tou svislou čarou? V podstatě bych nejdřív rozdělil řetězec na pole "řádků" / entit, a každý prvek pak dál rozdělil a zpracoval do použitelné podoby.
Kód: Vybrat vše
$vstupni_data = "DD.MM.YYYY|XX.XXX DD.MM.YYYY|XX.XXX DD.MM.YYYY|XX.XXX";
$radky = explode(" ", $vstupni_data);
$vystup = array_fill_keys(range(1, 12), array());
foreach ($radky as $radek) {
list ($datum, $hodnota) = explode("|", $radek);
$mesic = intval(substr($datum, 3, 2));
// nebo lze pouzit DateTime objekt pro zjisteni mesice
$dt = new \DateTime::createFromFormat("d.m.Y", $datum);
$mesic = (int) $dt -> format("n");
$vystup [$mesic] [$datum] = $hodnota;
// nebo
$vystup [$mesic] [] = [$datum => $hodnota];
// nebo pokud datum nebude dal potreba
$vystup [$mesic] [] = $hodnota
}
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 3
- 1397
-
od petr22
11 pro 2022 23:06
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 1 host