phpbar.de logo

Mailinglisten-Archive

[php] Re: Re: [php] Speichern von Arrays in Datenbank

[php] Re: Re: [php] Speichern von Arrays in Datenbank

Ulf Wendel ulf_(at)_redsys.de
Sun, 18 Jun 2000 14:21:22 +0200


Peter Holm wrote:
> 
> Hi!
> >serialize() - kann man auch wunderbar Arrays miteinander vergleichen.
> 
> Hättest Du Lust, das mal etwas genauer zu erklären? Wie genau geht das?
> 
> Was kann man denn noch alles mit serialize machen?

serialize() wurde geschaffen, um Sessions in PHP zu ermöglichen.

Mit "serializen" bezeichnet man den Prozeß eine Variable in ein
speicherbares Format zu überführen, welches später mit unserialize()
wieder in eine Variable überführt werden kann. Du speicherst also den
Inhalt der Variablen z.B. auf der Festplatte, um ihn später wieder
einzulesen. Dein Programm kann an der Stelle und in dem Zustand
weitermachen wo es aufgehört hat. Damit diese Speicherung und
Wiederherstellung klappt muß der Serializer für jeden Variablenwert eine
eindeutige Darstellung liefern. 

serialize() liefert einen kryptischen String, dessen Entstehung völlig
uninteressant ist. Wichtig ist, daß er für jeden Variablenwert eindeutig
ist. 

Zu den Arrays. Wie würdest Du zwei Arrays in -PHP3- vergleichen? Bei
einem direkten Vergleich, liefert PHP3 eine Warnung. Untenstehender Code
produziert eine Fehlermeldung ("Warning: Cannot compare arrays or
objects in FILE on line N"):

<?php
$a = array(1);
$b = array(1);

if ($a == $b) 
 echo "identisch";
else 
 echo "unterschiedlich";
?>

Du kannst jetzt entweder eine rekursive Funktion schreiben, um die
Arrays zu vergleichen oder auf serialize() zurückgreifen. serialize()
liefert einen String mit einer eindeutigen Darstellung des Inhalts.
Diese Strings kannst Du miteinander vergleichen:

<?php
[...]
if (serialize($a) == serialize($b)) 
 echo "identisch";
else 
  echo "unterschiedlich";
?>

Serialize() ist meiner Erfahrung nach schneller als eine eigene,
selbstgeschriebene, rekursive Funktion zum Vergleich der Inhalte.

PHP4 hat die ohnehin schon tollen Arrayfunktionen von PHP noch erweitert
und erlaubt einen direkten Vergleich. Der kleine Trick über einen
Serializer ist nicht mehr notwendig.

Ulf


php::bar PHP Wiki   -   Listenarchive