Mailinglisten-Archive |
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