PHP_L4m0r: Hash mit String-Schlüsseln aus Integer-Werten

Beitrag lesen

Hallo!

Angenommen, ich habe in einer Datenbank eine Relation mit einem auto_increment-Integer-Wert als Primärschlüssel. Nun möchte ich ein paar Datensätze herunterladen und ein assoziatives Array bauen, mit dem ich per Primärschlüssel (in logarithmischer Zeit) auf die restlichen Attributwerte der Tupel zugreifen kann.

Folgender Code symbolisiert dies (ohne Datenbank):

$keys = array(500, 501, 600, 700); // Irgend welche Primärschlüssel  
$hash = array(); // Hier soll die Zuordnung Schlüssel => Daten rein  
foreach ($keys as $key)  
	$hash[(string)$key] = array('attribute0' => 'value'); // Irgend welche Daten  

Was ich nun aus Performancegründen nicht möchte ist, dass ein Array mit 701 Elementen angelegt wird, von denen nur die vier Schlüsselelemente belegt sind. Deshalb habe ich beim Zugriff den Schlüssel in string konvertiert.

So weit so gut.

Wenn ich nun aber den Datentyp der Schlüssel abfrage:

foreach ($hash as $key => $value)  
{  
	echo gettype($key);  
	break;  
}

erhalte ich die Ausgabe "integer".

Für mich ist das durchaus irreführend. Ist es nun trotzdem so, dass $hash ein Hash ist oder ist das nun doch ein Array mit 701 Elementen was es aber eben nicht sein soll?

Ich hoffe, dass mir da jemand Auskunft geben kann! :-)

Viele Grüße!
  PHP_L4m0r