php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.02.2007, 01:16  
Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 50
micbur
Standard Object as Array

Hallo,

ich habe schon gesucht, aber nichts gefunden, was ich machen könnte.

Ich habe ein Object. Ich würde gerne durch die ganzen Felder in dem Object durchgehen. Wie komme ich da hin?

Ich würde einfach das Object gerne als Array haben wollen, dann kann ich mir einer foreach-Schleife durchgehen. Aber auch da weiß ich nicht wie es geht.

Was kann ich nun machen und vor allem wie?

Ciao, micbur
micbur ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.02.2007, 02:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Wenn Sie ein Objekt in ein Array umwandeln, bekommen Sie die Eigenschaften (Mitgliedsvariablen) des Objekts als Elemente des Arrays. Die Schlüssel sind die Namen der Mitgliedsvariablen.
$array = (array) $object;
nikosch ist gerade online  
Alt 10.02.2007, 08:52  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo micbur,

im objektorientierten Ansatz implementiert man hier to*()-Funktionen. Üblicherweise gibt es in JAVA toString() oder toChar(). Ich würde an deiner Stelle hier eine toArray()-Methode implementieren, die dir die Klassen-Variablen als Array zurück gibt. Das kann ungefähr so aussehen:

PHP-Code:

...
function 
to array(){
  return 
get_class_vars($this);
}
?> 
Wenn du nur bestimmte Variablen zurückgeben möchtest musst du noch ein bischen Code hinzufügen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 10.02.2007, 09:09  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard Re: Object as Array

Zitat:
Zitat von micbur
Ich habe ein Object. Ich würde gerne durch die ganzen Felder in dem Object durchgehen. Wie komme ich da hin?
PHP-Code:

while (list($key$value) = each($object)) {
  echo 
$key.' => '.$value.'
'
;

Also so kannst du ein Objekt durchgehen und jeden Wert ausgeben.
mAy^daY ist offline  
Alt 10.02.2007, 09:33  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo mAy^day,

das ist (in PHP 5) nicht ganz korrekt und der objektorientierte Ansatz sieht das auch nicht so vor. Bei deinem Code bekommst du IMHO in PHP 5 einen Fehler bei privaten und geschützten Membern.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 12.02.2007, 12:07  
Erfahrener Benutzer
 
Registriert seit: 02.08.2004
Beiträge: 472
duderino
Standard

PHP-Code:
function object2array($obj) {
    
$_arr is_object($obj) ? get_object_vars($obj) : $obj;
    foreach (
$_arr as $key => $val) {
        
$val = (is_array($val) || is_object($val)) ? object2array($val) : $val;
        
$arr[$key] = $val;
    }
    return 
$arr;

duderino ist offline  
Alt 03.08.2009, 21:34  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Rauskram. Habe herade gesehen, wieviele Hits dieser Thread hat, deswegen wollte ich noch ergänzen, dass in PHP5 je nach Anwendungszweck die Implementierung der Interfaces ArrayIterator bzw. ArrayAccess zielführend sind, um native Arrayzugriffe/schleifen zu ermoeglichen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (03.08.2009 um 21:37 Uhr).
nikosch ist gerade online  
Alt 04.08.2009, 00:14  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wobei ich es zweifelhaft finde, über ein z.B. User-Objekt zu iterieren oder ArrayAccess darauf zu verwenden. Ein Objekt ist ja im Gegensatz zum Array gerade keine Liste gleichartiger Elemente, sondern hat völlig unterschiedliche Eigenschaften, die von mir aus zwar in einem Zug ausgegeben werden können, aber dann doch nicht immer. Möchte ich bei einem User-Objekt das Passwort ausgeben, sicherlich nicht immer, was ist mit der ID des Datensatzes? Dann fange ich entweder an, im Objekt selbst zu filtern (der Iterator überspringt intern also Eigenschaften), dann habe ich ein Problem, wenn ich dann doch mal über diese Eigenschaften mititerieren möchte, oder aber ich filtere das ganze mit einer Blacklist:
PHP-Code:
<?php
while (current($userObject)) {
  
$property key($userObject);
  
$value current($userObject);
  if (
$property == "id" || $property == "password") {
    continue;
  }
  echo 
"$property: $value<br />";
}
?>
Und dann wirds tükisch, sobald das User-Objekt erweitert wird (neue Datenbankfelder, neue 1:1 Beziehung) das für die Ausgabe aber so noch garnicht geplant wurde. Das heißt letztlich sind wir dann doch wieder dabei, von einer Blacklist auf eine Whitelist umzustellen und somit wieder bei 0, man hätte sich den Iterator also auch sparen können.

ArrayAccess auf ein Objekt finde ich nicht gut, wegen dem [] Array-Operator, der hier nicht funktioniert und der Tatsache, dass ein Objekt nunmal ein Objekt ist, das getter/setter-Methoden hat, und kein Array.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 04.08.2009, 01:55  
yab
Erfahrener Benutzer
 
Registriert seit: 05.04.2009
Beiträge: 291
PHP-Kenntnisse:
Anfänger
yab befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Möchte ich bei einem User-Objekt das Passwort ausgeben, sicherlich nicht immer, was ist mit der ID des Datensatzes?
Naja, das könnte man ja im Template regeln, dass nur definierte Template-Variablen auch ausgegeben werden.

Zitat:
Zitat von Chriz Beitrag anzeigen
ArrayAccess auf ein Objekt finde ich nicht gut, wegen dem [] Array-Operator, der hier nicht funktioniert und der Tatsache, dass ein Objekt nunmal ein Objekt ist, das getter/setter-Methoden hat, und kein Array.
Wenn ein Objekt das Interface ArrayAccess implementiert, dann verhält es sich nun mal wie ein Array, inkl. dem [] Array-Operator (warum sollte der nicht funktionieren?)
yab ist offline  
Alt 04.08.2009, 01:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Wohl, weil es vermutlich keine Property mit numerischen Namen geben kann. Wenn man sich da was ausknobelt wirkt das vermutlich schon wie eine Krücke..
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
array und object... Sclot Datenbanken 9 24.11.2005 12:14
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php object to array, object to array php, php object array, object to array, object array, php objekt array, php object in array, php objekt in array umwandeln, php objekt in array, php object as array, php array to object, php objekt zu array, php object in array umwandeln, php array object, array to object, php obj to array, php object 2 array, object array php, object in array umwandeln, objekt in array umwandeln php

Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.