Zadejte hledaný výraz...

Jak vyhledat objekt v hodně komplexním objektu s variabilní hloubkou vnoření

Engineer
verified
rating uzivatele
(38 hodnocení)
1. 8. 2019 19:10:50
Tak jsem tu narazil na jednu jobovku, nad kterou moje mozkové závity se začínají přehřívat a nenašel jsem na to žádné elegantní řešení.
Problém je takový, že mám hodně komplexní objekt a potřebuji v něm najít podobjekt s hodnotou.
Vypadá to asi tak nějak (uvádím jen začátek objektu a značně jsem to zjednodušil)
stdClass Object
(
=> stdClass Object
(
=> stdClass Object
(
=>
=> Array
(
)
)
=> stdClass Object
(
)
=> stdClass Object
(
=> stdClass Object
(
=>
=>
=> Array
(
)
=> Array
(
=> stdClass Object
(
=> 12345
=> Alfa
)
=> stdClass Object
(
=> 67890
=> Beta
)
)
=> Array
(
)
Jde o to, že potřebuji dostal pole, ve kterém se nachází ty 2 objekty, tj. objekt, který mý vlastnost "Alfa" a objekt, který má vlastnost "Beta", abych si toto pole objektů mohl projít foreachem.
Problém je, že objekt je extrémně složitý a je náhodně nakombinovaný z objektů a polí, indexy mají také náhodné řazení a náhodná je i úroveň vnoření, tj. někdy to pole objektů může být v první vrstvě, někdy v páté, atd..
Jediné, čeho se můžu chytit, tak je to číslo 12345, to vím dopředu, že tam je, a je tam pouze 1x tj. musím udělat funkci, která mi rekurentně projde objekt, najde mi hodnotu 12345 v podobjektu a jakmile ji najde, vrátí mi rodičovské pole, ve kterém se nachází. Ale vůbec netuším jak, uvítám každou radu.
1. 8. 2019 19:10:50
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410660
michal731
verified
rating uzivatele
(69 hodnocení)
1. 8. 2019 19:20:17
Tipuji, že používáš PHP 5.5 a výše. Nepomohlo by klasické array_search?
1. 8. 2019 19:20:17
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410659
Engineer
verified
rating uzivatele
(38 hodnocení)
1. 8. 2019 19:39:59
Napsal michal731;1538183
Tipuji, že používáš PHP 5.5 a výše. Nepomohlo by klasické array_search?
PHP 7.3 , nevím, jak by mi to array_search takhle celý prošel a ještě k tomu mix objektů a polí, napiš kód, jak to myslíš :)
1. 8. 2019 19:39:59
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410658
michal731
verified
rating uzivatele
(69 hodnocení)
1. 8. 2019 19:44:43
Bude to o testování a kombinování ale myslím, že by to mohlo jít. Dá se na to najít více způsobů.
php search in multiple array
Sorry, nejsem u pc tak teď nic nenapíši :)
1. 8. 2019 19:44:43
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410657
zlatomil
verified
rating uzivatele
1. 8. 2019 19:48:25
Napsal Engineer;1538186
PHP 7.3 , nevím, jak by mi to array_search takhle celý prošel a ještě k tomu mix objektů a polí, napiš kód, jak to myslíš :)
Nemyslím, že přímo array_search, ale v komentech na manuálové stránce k této funkci je mrtě pokusů o rekurzi. Předpokládám, že půjdou rozšířit o test na objekt.
1. 8. 2019 19:48:25
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410656
qye
verified
rating uzivatele
(16 hodnocení)
1. 8. 2019 21:08:47
vypise:
1. 8. 2019 21:08:47
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410655
Proč je ten objekt tak ošklivý? Odkud pochází? Dá se jeho struktura upravit?
Hledaný řetězec je tam pouze jednou? Může existovat i jako součást delšího řetězce?
Nachází se v tom objektu kromě stdClass jiné než skalární hodnoty (string, int, bool...)?
2. 8. 2019 02:14:10
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410654
Jak píše qye - můžeš to projít rekurzivní funkcí a když narazíš na to co hledáš, tak si to uložit.
2. 8. 2019 06:34:16
https://webtrh.cz/diskuse/jak-vyhledat-objekt-v-hodne-komplexnim-objektu-s-variabilni-hloubkou-vnoreni/#reply1410653
Pro odpověď se přihlašte.
Přihlásit