login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Obj naar Array

Offline ThAlmighty - 25/10/2006 20:21
Avatar van ThAlmightyHTML beginner Hee,
bestaat er een functie, of kent iemand een manier, om een object om te zetten naar een array?

11 antwoorden

Gesponsorde links
Offline Stijn - 25/10/2006 21:29
Avatar van Stijn PHP expert werk met __sleep(); en __wakeup. je kan dan je object in een array veranderen .
Offline Appie_Dijk - 25/10/2006 23:00
Avatar van Appie_Dijk Lid zou je hier een voorbeeld van kunnen geven? dit zoek ik namelijk ook al een tijdje... (maar voor mij was het niet zo dringend dat ik er een forumtopic voor wou openen)
Offline ikkedikke - 25/10/2006 23:30
Avatar van ikkedikke PHP expert http://www.php.net/foreach#62187
Offline Stijn - 25/10/2006 23:39
Avatar van Stijn PHP expert
  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  3. /**
  4. * __sleep / __wakeup
  5. *
  6. * @license http://www.gnu.org/licenses/gpl.html
  7. * @author Stijn Leenknegt <stijnleenknegt@gmail.com>
  8. * @version Versie 1.0
  9. * @package noob_packages
  10. */
  11.  
  12. // full error reporting
  13. error_reporting( E_ALL );
  14.  
  15. class A
  16. {
  17.  
  18. public $aVar;
  19.  
  20. public function __construct( $val )
  21. {
  22. $this->aVar = $val;
  23. }
  24.  
  25. public function __sleep()
  26. {
  27. return array( 'aVar' ); // ALTIJD EEN ARRAY RETURNEN , LET OP DE VARIABLE SIGNIFICATIE!
  28. }
  29.  
  30. public function __wakeup()
  31. {
  32. //hier kan je vanalles inzetten , bv andere functie aanroepen
  33. //$this->give();
  34. }
  35.  
  36. public function give()
  37. {
  38. return $this->aVar;
  39. }
  40.  
  41. }
  42.  
  43. $obj = new A('stijn');
  44. $_SESSION['t'] = serialize( $obj );
  45. $obj = array( 'stijn' , 'ibrahim' , 'pieter' );
  46. echo "<pre>";
  47. var_dump( $obj );
  48. echo "</pre>";
  49. $obj = unserialize( $_SESSION['t'] );
  50. echo $obj->give();
  51. ?>


aub
Offline nemesiskoen - 26/10/2006 11:26
Avatar van nemesiskoen Gouden medaille

PHP expert
Dit zet dat object helemaal niet om in een array, maar serializeerd gewoon de handel.

Voor een object om te zetten naar een array kan je heel eenvoudig er (array) voor zetten. Dan moet je wel zorgen dat als je object andere objecten bevat dat die ook worden omgezet (door erdoor te loopen).
Offline Stijn - 26/10/2006 11:29
Avatar van Stijn PHP expert idd , maar het object wordt toch array zonder verlies van het object 

Ik weet niet zeker maar __toString(); zet een object in een string. Je kan een functie __toArray(); eens proberen te maken 

  1. <?
  2. $obj = new A('stijn');
  3. echo $obj; //__toString();
  4. ?>
Offline nemesiskoen - 26/10/2006 11:31
Avatar van nemesiskoen Gouden medaille

PHP expert
Stijn, het is niet de bedoeling het object te bewaren ookal wordt het overschreven door een array, maar om de info van het object om te zetten in een array. En die __toString zul je nog altijd zelf moeten aanmaken en dat gaat nooit zo'n resultaat geven zoals wat hij wilt. Iets wat die simpele (array) wel doet:

  1. $obb_to_arr = (array) $obj;


Overlaatst is er trouwens op wmcity.nl een script toegevoegd wat ook geneste objects behandeld.
Offline Stijn - 26/10/2006 11:32
Avatar van Stijn PHP expert wat staat er dan in die array? gewoon de variablen?
Offline nemesiskoen - 26/10/2006 11:33
Avatar van nemesiskoen Gouden medaille

PHP expert
Probeer het uit hé:-)
Natuurlijk de variabelen, dat is ook wat hij wil.
  1. <?php
  2. class A{}
  3. $a = new A;
  4. $a->b = "c";
  5. $a->d = "e";
  6.  
  7. $a = (array)$a; // casting
  8.  
  9. echo '<pre>';
Offline Stijn - 26/10/2006 11:53
Avatar van Stijn PHP expert ik zal thuis es kijken. zit op school (acces :p)
Offline ikkedikke - 26/10/2006 20:03
Avatar van ikkedikke PHP expert probeer het nou simpelweg eens met foreach... ik weet niet wie er zin heeft om al zijn klasses te herschrijven met al die functies..?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s