Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Přesouvání položek v rámci pole

Aktivity
Avatar
MicBlack
Člen
Avatar
MicBlack:9.4.2018 13:12

Ahoj,

chtěl bych poprosit o pomoc s následujícím příkladem (mořil jsem se s tím celý den a nepodařilo se mi to pořádně vykoumat)

V DB mám tabulku, která obsahuje záznamy rubrik a podrubrik. V tabulce jsou seřazené ruzně.

V PHP si záznamy vytahuju a vytvářím tak 2 pole. 1. pole rubriky, 2. pole podrubriky. A následně bych ta 2 pole chtěl zmergovat do jednoho pole s tím, že se ty podrubriky správně appendnou za rubriku, ke které patří, dle ID.

V tuto chvíli se mi podařilo úspěšně zmergovat ty 2 pole do jednoho (viz kód níže), ale nepodařilo se mi to správně seřadit.

Array
(
    [0] => Array
        (
            [id] => 1
            [jmeno] => Obecné
        )

    [1] => Array
        (
            [id] => 2
            [jmeno] => Novinky
        )

    [2] => Array
        (
            [id] => 3
            [jmeno] => O webu
        )

    [3] => Array
        (
            [id] => 4
            [jmeno] => O cestování
        )

    [4] => Array
        (
            [id] => 5
            [jmeno] => O počítačích
        )

    [5] => Array
        (
            [id] => 6
            [jmeno] => O autech
        )

    [6] => Array
        (
            [id] => 20
            [jmeno] => Archiv
            [rodic_sekce_id] => 1
        )

    [7] => Array
        (
            [id] => 21
            [jmeno] => Hlavní stránka
            [rodic_sekce_id] => 1
        )

    [8] => Array
        (
            [id] => 22
            [jmeno] => Benzín auta
            [rodic_sekce_id] => 6
        )

    [9] => Array
        (
            [id] => 23
            [jmeno] => Elektro auta
            [rodic_sekce_id] => 6
        )

)

Zkoušel jsem použít 2 cykly a vždy porovnat rodic_sekce_id s id -> pokud se shodnou, tak aby se provedlo přesunutí toho prvku na index rodice + 1. Používal jsem metodu array_splice, ale někde jsem dělal chybu, protože vysledek byl pole, které bylo několikrát iterované.

Měl byste prosím někdo tip, jak si s tím poradit? díky

 
Odpovědět
9.4.2018 13:12
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na MicBlack
Petr Čech:9.4.2018 14:58

Udělej to objektově místo pole. K tomuto se pole nepoužívají ;)

Nahoru Odpovědět
9.4.2018 14:58
the cake is a lie
Avatar
MicBlack
Člen
Avatar
Odpovídá na Petr Čech
MicBlack:9.4.2018 20:25

Díky za reakci. Jak prosím tě myslíš objektově? Mohl bys dát prosím nějaký nástřel? Pak už se chytím. Díky!

 
Nahoru Odpovědět
9.4.2018 20:25
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na MicBlack
Petr Čech:9.4.2018 20:42

Prostě si uděláš třídu pro rubriku a podrubriku, a z nich si uděláš pole. A rubriky si budou potom dělat merge nějakou metodou na své vlastnosti.

Nahoru Odpovědět
9.4.2018 20:42
the cake is a lie
Avatar
Odpovídá na Petr Čech
Marian Benčat:10.4.2018 8:19

Udělej to objektově místo pole. K tomuto se pole nepoužívají

Jsem rád, že to říkáš, doufám že víš, jak jsou v PHP naimplementované objekty :D

Nahoru Odpovědět
10.4.2018 8:19
Totalitní admini..
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Marian Benčat
Petr Čech:10.4.2018 9:55

Nevím a vědět to nechci, tak nějak tuším, že PHP je i na pozadí bordel :D
Jde spíš o to, že když si to uděláš objektově, máš to jako programátor mnohem pohodlnější.

Nahoru Odpovědět
10.4.2018 9:55
the cake is a lie
Avatar
Odpovídá na Petr Čech
Marian Benčat:10.4.2018 14:53

Jako asociativní pole Péťo,, jako asociativní pole:-) a jak je implementováno normální pole? Taky jako asociativní pole jen s pár rozdíly :) Vnitřně rozdíl není, v jazyku kde se to dovoluje je tedy i výhodné této skutečnosti využívat.. třeba takový JS to rád dělá, že jo..

obj[property] = value;

V C# si měl taky nějakou dobu dynamic jen jako syntactic sugar nad Dictionary<> , než měli dynamic runtime.

Nahoru Odpovědět
10.4.2018 14:53
Totalitní admini..
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na MicBlack
David Hartinger:10.4.2018 15:37

Tvůj problém je vyřešený tady - https://www.itnetwork.cz/…tabaze-v-php

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
10.4.2018 15:37
New kid back on the block with a R.I.P
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Marian Benčat
Petr Čech:10.4.2018 16:09

Ok, a co s tím ale? Tahle informace je tady celkem k ničemu, zabýváme se tu tím, jak vyřešit problém...
Já jsem chtěl upozornit na to, že lidé používají v PHP pole místo toho, aby si udělali objekt a potom se v tom nikdo včetně jich samotných nevyzná - je to taková dvousečná zbraň. Vedlejším efektem toho, když si to přepíše do objektů je to, že zjistí, kde je chyba, protože bude muset řešit věci na úrovni zanoření, kde by měl.

Nahoru Odpovědět
10.4.2018 16:09
the cake is a lie
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Petr Čech
David Hartinger:10.4.2018 16:11

Samozřejmě, že je to nesmysl, pole a objekt je úplně něco jiného. Mariana jsem z PHP fóra vyhodil, píše tu takovéhle věci pořád, které se vůbec netýkají otázky a často ani PHP.

Nahoru Odpovědět
10.4.2018 16:11
New kid back on the block with a R.I.P
Avatar
MicBlack
Člen
Avatar
Odpovídá na David Hartinger
MicBlack:11.4.2018 10:02

Super. Díky moc! Kouknu na to.

 
Nahoru Odpovědět
11.4.2018 10:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.