phpbar.de logo

Mailinglisten-Archive

[php] Re: =?iso-8859-1?Q?=5Bphp=5D_Doubletten_im_Array-Key_m=F6glich=3F?=

[php] Re: =?iso-8859-1?Q?=5Bphp=5D_Doubletten_im_Array-Key_m=F6glich=3F?=

Andreas Braukmann braukmann_(at)_tse-online.de
Wed, 9 Feb 2000 18:52:22 +0100


Hi,

On Wed, Feb 09, 2000 at 04:51:33PM +0100, Oliver Kummerow wrote:
 
> kann man PHP beibringen, in assoziativen Arrays Doubletten zuzulassen?
> So dass 
> $arr["erster"]= "einezuweisung";
> $arr["erster"]= "nocheinezuweisung";
> 
> auch zu count ($arr ) == 2 führt, d.h. beide Zuweisungen erhalten
> bleiben?
nein. Das geht nicht nicht. Wie denn auch? ;) 
Aber natuerlich kann man trotzdem die gewuenschte Funktionalitaet 
erreichen. 

Simpel-Beispiel:
(quick and dirty hack without styles and guaranteed non tested ;) 

class Hash
{
    var $storage = array();

    function put( $key, $value ){
        if ( $this->storage[ $key ] ){
            // hash-basket ist schon angelegt, also
            // einfach ein Element mehr in den Korb ...
            $this->storage[ $key ][] = $value;
        } else {
            // hash-basket noch nicht da, 
            // ... also machen wir einen huebschen Korb
            // und legen den ersten Wert rein
            $this->storage[ $key ] = array( $value );
        }
    }

    function get( $key ){
        if ( $this->storage[ $key ] ){
            $value = $this->storage[ $key ];
            if ( count( $value ) == 1 ){
                // wir sind mal nett und reichen fuer
                // den Einzelfall auch gleich das einzelne
                // Element raus
                return reset( $value );
            } else {
                // ansonsten liefern wir eine Kopie des
                // ganzen Korbes 
                return $v;
            }
        } else {
            // oh' der Korb ist leer, ...

            return false;
        }

    }
}

Ergaenzung der Schnittstelle um weitere sinnvolle Funktionen bleiben
dem geneigten Leser als Uebungsaufgabe ;)

... alle Angaben ohne Gewehr, ... oder so.

-Andreas

-- 
: Anti-Spam Petition:     http://www.politik-digital.de/spam/          :
: PGP-Key:                http://www.tse-online.de/~ab/public-key      :
: Key fingerprint:  12 13 EF BC 22 DD F4 B6  3C 25 C9 06 DC D3 45 9B   :


php::bar PHP Wiki   -   Listenarchive