======[PHP] Einfache Hashtable======
So auf die Schnelle eine Hashtable nachgebildet
Zuerst eine abstrakte Hashtable, die so wiederverwendbar ist
> 2-Dimensionales Array
*/
public function __construct($input){
foreach($input as $array){
$this->append($array);
}
}
/**
* @abstract
* @param Array Array mit den Werten die für den Key verwendet werden
*/
abstract protected function getHashKey($array);
/**
* @abstract
* @param Array Eingabe-Array
*/
abstract protected function getValueFromArray($array);
/**
* Ein Array als Wert der Hashtable hinzufügen
* @param Array Array mit allen Werten
*/
public function append($array){
$hashkey = $this->getHashKey($array);
$value = $this->getValueFromArray($array);
parent::offsetset($hashkey, $value);
}
}
?>
Daraus leiten wir eine für diesen Fall speziefische Hashtable ab
$name, 'typ' => $typ);
$hashkey = $this->getHashKey($keys);
return parent::offsetGet($hashkey);
}
/**
* @overwrite
* @param Array('name'=>, 'typ'=>)
*/
protected function getHashKey($array){
return $array['name'].'#'.$array['typ'];
}
/**
* @overwrite
* @param Array
*/
protected function getValueFromArray($array){
return $array['value'];
}
}?>
Und so kann man das Ding dann anwenden
//Testdaten
$array[] = array('name' => '123', 'typ' => 'A', 'value' => 'abc');
$array[] = array('name' => '456', 'typ' => 'A', 'value' => 'def');
$array[] = array('name' => '789', 'typ' => 'B', 'value' => 'ghi');
//Hashtable anlegen
$hashTable = new MyHashTable($array);
//Wert aus Hashtable laden. In diesem Fall sollte 'def' rauskommen
echo $hashTable->get('456','A');