It should be noted that it is not always safe to iterate through the database while changing it at the same time. For example:
<?php
$db=dba_open(...);
// remove all values shorter than 10 characters
for ($key=dba_firstkey($db); $key!==false; $key=dba_nextkey($db)) {
$s=dba_fetch($key, $db);
if (strlen($s)<10) {
dba_delete($key, $db);
}
}
?>
The above example will work fine with db4 handler, but not with gdbm. It is handler specific.