<?php
function add(&$array, $value, $m) {
for ($i = 0; $i < $m; $i++) {
$j = hash_function($value, $i, $m); // hajautetaan lisättävän alkion avain k indeksiksi h(k) väliltä [0, m − 1]
if (!array_key_exists($j, $array)) {
$array[$j] = $value;
return true; // onnistui
}
}
return false; // taulukko täynnä
}
function search(&$array, $value, $m) {
for ($i = 0; $i < $m; $i++) {
//$j = hash_function($value, $i, $m);
if ($array[$i] != $value) continue;
if (!array_key_exists($i, $array)) break; // lista loppui
if ($array[$i] != -1 && $array[$i] == $value) return $i; // löytyi, palautetaan indeksi
}
return false; // ei löytynyt
}
function remove(&$array, $value, $m) {
$j = search($array, $value, $m); // haku
if ($j < 0) throw new Exception("Error Processing Request", 1);
else $array[$j] = -1; // vaihdetaan tilalle -1
}
function hash_function($value, $i, $m) {
$mod = ($value % $m) + $i;
return $mod;
}
$array = [];
$m = 10;
foreach ([21, 55, 31, 49, 52, 72, 26, 19] as $val) {
add($array, $val, $m);
}
echo var_dump($array) . "\n";
remove($array, 21, $m);
remove($array, 55, $m);
echo var_dump($array) . "\n";
?>