Jak dál pracovat se stringem v PHP

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Montes
Level 3
Level 3
Příspěvky: 637
Registrován: prosinec 12
Pohlaví: Muž

Jak dál pracovat se stringem v PHP

Příspěvekod Montes » 05 dub 2022 10:58

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.

Reklama
Serg01
Level 1
Level 1
Příspěvky: 54
Registrován: červenec 21
Pohlaví: Nespecifikováno

Re: Jak dál pracovat se stringem v PHP

Příspěvekod Serg01 » 05 dub 2022 15:20

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
}


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 0 hostů