WulfmanGER
Commander
- Registriert
- Juli 2005
- Beiträge
- 2.352
Hallo zusammen,
ich hab in einer DB folgenden String:
ich benötige hier folgende Information "ideal_size" für thumb, square usw. Ein einfaches "unserialize" hilft leider nicht.
Eine Lösung für PHP Incomplete hab ich gefunden ...
=>
Ich hab es mal so versucht:
=>
Ich hab mir dann mal angeschaut wie piwigo bzw. das Plugin welches dieses Tabellenfeld ebenfalls nutzt, damit umgeht. Leider nicht so recht schlau raus geworden. Die nutzten letztendlich nur ein unserialize bzw. eine Funktion "safe_unserialize" die ein unserialize ergänzt um schutz vor "doppelten unserialize".
Durch google fand ich zumindest ein ähnliches Problem. Aber bekomme das nicht umgestrickt. https://community.contao.org/de/sho...rt-aus-Objekt-auslesen-Array-Objekt-protected
Er hat hier eine Ebene weniger für seine Wunschausgabe. Ansonsten ist das Array bei ihm aber ähnlich aufgebaut.
Aufbau grob bei mir:
d (array) -> thumb (object) -> sizing (object) -> ideal_size (array) -> 0 bzw. 1
Sein Aufbau:
0 (array) -> product (object) -> arrData (array) -> soldout
So kommt er ans Ziel:
Versucht hab ich es mit
Ergebnis: nichts - zumindest keine Fehlermeldung mehr. Also richtiger weg? Fehler im Detail?
Danke schon mal
ich hab in einer DB folgenden String:
Code:
a:4:{s:1:"d";a:6:{s:6:"square";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537140;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:120;i:1;i:120;}s:8:"max_crop";d:1;s:8:"min_size";a:2:{i:0;i:120;i:1;i:120;}}s:7:"sharpen";i:0;}s:5:"thumb";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537140;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:144;i:1;i:144;}s:8:"max_crop";d:0;s:8:"min_size";a:2:{i:0;i:0;i:1;i:0;}}s:7:"sharpen";i:0;}s:6:"2small";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537140;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:240;i:1;i:240;}s:8:"max_crop";d:0;s:8:"min_size";a:2:{i:0;i:0;i:1;i:0;}}s:7:"sharpen";i:0;}s:6:"medium";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537430;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:800;i:1;i:600;}s:8:"max_crop";d:0;s:8:"min_size";a:2:{i:0;i:0;i:1;i:0;}}s:7:"sharpen";i:0;}s:5:"large";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537182;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:1024;i:1;i:768;}s:8:"max_crop";d:0;s:8:"min_size";a:2:{i:0;i:0;i:1;i:0;}}s:7:"sharpen";i:0;}s:7:"xxlarge";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1558537140;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:1656;i:1;i:1242;}s:8:"max_crop";d:0;s:8:"min_size";a:2:{i:0;i:0;i:1;i:0;}}s:7:"sharpen";i:0;}}s:1:"q";i:95;s:1:"w";O:15:"WatermarkParams":7:{s:4:"file";s:0:"";s:8:"min_size";a:2:{i:0;i:500;i:1;i:500;}s:4:"xpos";i:50;s:4:"ypos";i:50;s:7:"xrepeat";i:0;s:7:"yrepeat";i:0;s:7:"opacity";i:100;}s:1:"c";a:10:{s:4:"s250";i:1556797874;s:9:"s9999x200";i:1558555088;s:9:"s9999x410";i:1460994371;s:9:"s9999x408";i:1481713258;s:15:"648x216_z_0x216";i:1558500291;s:8:"e260x180";i:1483354228;s:3:"e64";i:1558543428;s:8:"s9999x64";i:1461243006;s:4:"e150";i:1558576541;s:8:"e520x360";i:1558536612;}}
ich benötige hier folgende Information "ideal_size" für thumb, square usw. Ein einfaches "unserialize" hilft leider nicht.
Code:
[d] => Array
(
[square] => __PHP_Incomplete_Class Object
(
[__PHP_Incomplete_Class_Name] => DerivativeParams
...
Eine Lösung für PHP Incomplete hab ich gefunden ...
Code:
class DerivativeParams{}
class SizingParams{}
class WatermarkParams{}
=>
Code:
Array
(
[d] => Array
(
[square] => DerivativeParams Object
(
[last_mod_time] => 1558537140
[sizing] => SizingParams Object
[ideal_size] => Array
(
[0] => 120 <- brauch ich
[1] => 120 <- brauch ich
)
...
Ich hab es mal so versucht:
Code:
echo $output['d']['thumb']['sizing']['ideal_size']['0'];
Code:
Fatal error: Uncaught Error: Cannot use object of type DerivativeParams as array in /.../tester.php:27 Stack trace: #0 {main} thrown in /.../tester.php on line 27
Da ich ein Array ja komplett per schleife auslesen kann, hab ich mal ein einfaches foreach probiert - einfach der Fehlermeldung wegen :)
[code]
Recoverable fatal error: Object of class DerivativeParams could not be converted to string in
Ich hab mir dann mal angeschaut wie piwigo bzw. das Plugin welches dieses Tabellenfeld ebenfalls nutzt, damit umgeht. Leider nicht so recht schlau raus geworden. Die nutzten letztendlich nur ein unserialize bzw. eine Funktion "safe_unserialize" die ein unserialize ergänzt um schutz vor "doppelten unserialize".
Durch google fand ich zumindest ein ähnliches Problem. Aber bekomme das nicht umgestrickt. https://community.contao.org/de/sho...rt-aus-Objekt-auslesen-Array-Objekt-protected
Er hat hier eine Ebene weniger für seine Wunschausgabe. Ansonsten ist das Array bei ihm aber ähnlich aufgebaut.
Aufbau grob bei mir:
d (array) -> thumb (object) -> sizing (object) -> ideal_size (array) -> 0 bzw. 1
Sein Aufbau:
0 (array) -> product (object) -> arrData (array) -> soldout
So kommt er ans Ziel:
Code:
$product['product']->soldout
Versucht hab ich es mit
Code:
$output['thumb']->sizing->ideal_size[0]
Danke schon mal