Autor Zpráva
Fury
Profil *
Zdravím,

narazil jsem na jeden problém a nedaří se mi ho vyřešit.

Mám dvě pole naplněné z databáze a to je $tym_id[], kde mám následující záznamy:
Array
(
    [66] => 144
    [67] => 145
    [68] => 146
)

A následně pole $tym_nazev[]:
Array
(
    [68] => FK Klánovice, o.s.
    [69] => Fotbalový klub Újezd nad Lesy "B"
    [70] => SK Ďáblice z.s. "B"
)

Zároveň pak mám pole $everything, kde jsou záznamy:
Array
(
    [4] => Array
        (
            [domaci] => FK Klánovice, o.s. (1)
        )
    [5] => Array
        (
            [domaci] => Fotbalový klub Újezd nad Lesy "B" (7)
        )
    [5] => Array
        (
            [domaci] => SK Ďáblice z.s. "B" (3)    
        )
)


A já chci docílit toho, abych nahradil název týmu za ID týmu a to provádím následovně:
foreach ($everything as $innerArray) {
     if (is_array($innerArray) && !empty($innerArray['domaci'])){
   
     // Odstranění číselného záznamu (2), (33), apod.
     $domaci = trim(substr($innerArray['domaci'], 0, -4));
   
     $domaci_id = str_replace($tym_nazev, $tym_id, $domaci);
         
    echo $domaci_id;
         
     }
}

V tu chvíli mi pro FK Klánovice, o.s. vrací správné ID 68, ale pro týmy, které mají na konci "B", se mi vrací:
99 "B" (pro tým Fotbalový klub Újezd nad Lesy "B")
97. "B" (pro tým SK Ďáblice z.s. "B")

Netušíte, kde by mohl být problém?

Díky moc!


Omlouvám se za špatný nadpis, měl být správně:

Funkce substr - špatně porovnává záznamy s uvozovky -> Funkce str_replace - špatně nahrazuje záznamy s uvozovky
Moderátor juriad: Opraven nadpis; kdybys byl přihlášený, tak bys mohl příspěvek i nadpis upravovat.
juriad
Profil
Fury:
Hádám, že máš v databázi dva různé týmy:
    [99] => Fotbalový klub Újezd nad Lesy
    [69] => Fotbalový klub Újezd nad Lesy "B"

Odkud pochází pole $everything? Proč jej neuložíš do databáze a později neprovádíš všechny operace v databázi?

Ještě dodám, že funkce str_replace nedefinuje, v jakém pořádí se nahrazování provádí, takže bys na to vůbec neměl spoléhat. Pokud chceš použít funkci str_replace, musíš zajistit, že žádný název týmu nebude prefixem jiného.
Fury
Profil *
juriad:
Jo, ten problém jsi trefil, to mě vůbec nenapadlo. Díky!

Co se týče $everything, tak to zpracovávám HTML zápis. To s tím naplnit $everything do databáze je super nápad, vůbec mě nanapadlo, že by mi to mohlo ulehčit dost problémů. Ještě jednou díky!

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